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_config
にAllowUsers
を加える
sudo vi /etc/ssh/sshd_config
- #PermitRootLogin yes
+ PermitRootLogin no
設定反映
sudo systemctl restart sshd.service
ログイン可能ユーザ制限
/etc/ssh/sshd_config
にAllowUsers
を加える
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 で鍵を生成する
- メニューバー→設定→SSH鍵生成 を選択
- 鍵の種類:RSA ビット数:2048以上
- 「生成」をクリック(パスフレーズやコメントは適宜。)
- 「公開鍵の保存」、「秘密鍵の保存」をそれぞれ行う。
鍵登録
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