Help us understand the problem. What is going on with this article?

CentOS7 SSH設定の記録

More than 1 year has passed since last update.

CentOS7 のSSHの設定をした時の備忘録

  • SSHポート変更
  • rootログイン禁止
  • ログイン可能ユーザ制限
  • 公開鍵認証設定

環境

  • host : centOS7
  • client : windows10 (Tera Term)

作業内容

注意!!ログイン不能に陥る可能性があるため、直接操作できるようにしておくか別セッションを用意しておく

portの変更

firewall

サービスを作る

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-shift.xml
sudo vi /etc/firewalld/services/ssh-shift.xml
- <port protocol="tcp" port="22"/>
+ <port protocol="tcp" port="XXXXXX"/>

サービスを登録する

sudo firewall-cmd --permanent --add-service=ssh-shift
sudo firewall-cmd --reload

ssh

sshd_config よりポートを変更する

sudo vi /etc/ssh/sshd_config
- #port 22
+ port XXXXX

設定反映

sudo systemctl restart sshd.service

rootログイン禁止

/etc/ssh/sshd_configAllowUsers を加える

sudo vi /etc/ssh/sshd_config
- #PermitRootLogin yes
+ PermitRootLogin no

設定反映

sudo systemctl restart sshd.service

ログイン可能ユーザ制限

/etc/ssh/sshd_configAllowUsers を加える

AllowUsers書式

内容 記述例
接続許可ユーザ設定 AllowUsers ユーザ名
複数の接続許可ユーザ設定 AllowUsers ユーザ名1 ユーザ名2
特定のIPアドレスからのみ接続許可ユーザ設定 AllowUsers ユーザ名@接続元IP
特定のIPアドレスからのみ接続許可(全ユーザ) AllowUsers *@接続元IP
sudo vi /etc/ssh/sshd_config
+ AllowUsers username

設定反映

sudo systemctl restart sshd.service

鍵認証設定

鍵生成

client側作業
今回はTera Term で鍵を生成する

  1. メニューバー→設定→SSH鍵生成 を選択
  2. 鍵の種類:RSA ビット数:2048以上
  3. 「生成」をクリック(パスフレーズやコメントは適宜。)
  4. 「公開鍵の保存」、「秘密鍵の保存」をそれぞれ行う。

鍵登録

host側作業
hostに一時ディレクトリ(~/tmp/)を作り、そこに公開鍵を転送する(~/tmp/id_rsa.pub)。
方法はSCPでもよいし、内容を転記してもよい。

鍵を~/.ssh/authorized_keysに登録する。未作成の場合はつくる。
authorized_keysには複数の鍵を、追記していくことで登録できる。

# ~/.ssh/ がない場合
mkdir ~/.ssh
cat ~/tmp/id_rsa.pub >> ~/.ssh/authorized_keys
#アクセス権調整
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
#一時ファイルの削除
rm ~/tmp/id_rsa.pub

プレーンパスワード認証の禁止

/etc/ssh/sshd_configを変更し、プレーンパスワードでのログインを禁止する。

sudo vi /etc/ssh/sshd_config
- #PasswordAuthentication yes
- #PermitEmptyPasswords no
+ PasswordAuthentication no
+ PermitEmptyPasswords no

sudo systemctl restart sshd.service

おまけ:鍵認証ログイン用Tera Term マクロ

username = 'USER'
hostname = 'XXX.XXX.XXX.XXX'
port = 'XXXX'
keyfile = 'D:\serverFiles\ID_KEY\PATH'

msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

msg = hostname
strconcat msg ':'
strconcat msg port
strconcat msg ' /ssh /auth=publickey /user=' ; 「/auth=publickey」で認証方法として公開鍵認証を指定
strconcat msg username
strconcat msg ' /keyfile='
strconcat msg keyfile
strconcat msg ' /passwd="'
strconcat msg inputstr
strconcat msg '"'
connect msg
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away