CentOS7でSSH公開鍵認証を設定し、より安全に通信を行う方法をまとめています。
SSH公開鍵認証を設定するだけでセキュリティが大きく向上すると思いますね(・ω・)ノ
サーバー構築後、必ず行いたい設定の一つです。
tera termで鍵のペアを作成
windows環境のため、tera termを利用して鍵認証のペアを作成
「設定(S)」メニューより「SSH鍵生成(N)」を選択し、鍵生成画面を表示
鍵の種類「RSA」にチェックし、「生成」を選択
「公開鍵の保存」と「秘密鍵の保存」を行う
今回は、テスト環境作成のため、秘密鍵を「空のパスフレーズ」のまま作成
実際の運用の際は、セキュリティ上設定を行う必要がある
公開鍵の設定
サーバーに公開鍵を設置
公開鍵保管場所を作成
mkdir /home/user/.ssh
chmod 700 /home/user/.ssh
chown -R user:user /home/user/.ssh
作成した「id_rsa.pub」をtera term上にドラッグ&ドロップし、SCPで公開鍵の設置
SCP「∼⁄」と入力して「SCP」を選択
転送した「id_rsa.pub」をリネームして移動
mv ~/id_rsa.pub /home/user/.ssh/authorized_keys
chmod 600 /home/user/.ssh/authorized_keys
chown -R user:user /home/user/.ssh/authorized_keys
SSHの設定
SSHに関する接続の設定を変更する
configファイルのバックアップ
cp -pi /etc/ssh/sshd_config{,.`date "+%Y%m%d_%H%M%S"`}
configファイルの変更
vi /etc/ssh/sshd_config
#Port 22
>> Port 2202 # portを変更したい場合のみ(ここでは2202を設定した)
#PermitRootLogin yes
>> PermitRootLogin no # rootのSSHアクセス不可
#以下、末尾に追記
>> Protocol 2 # SSHのプロトコルをSSH2のみ対応とする
firewallの設定
SSHの接続portを変更した場合、firewallの設定を変更する
configファイルのバックアップ
cp /usr/lib/firewalld/services/ssh.xml{,.`date "+%Y%m%d_%H%M%S"`}
configファイルの変更
vi /usr/lib/firewalld/services/ssh.xml
<port protcol="tcp" port="22" />
>> <port protcol="tcp" port="2202" /> # 変更したport
firewall-cmd --reload
SELinuxの設定
SSHの接続portを変更した場合、SELinuxの設定を変更する
設定変更
yum -y install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 2202 # 変更したport
semanage port -l | grep ssh # 変更したport
sshサービスの再起動
systemctl restart sshd
別ターミナルより公開鍵を利用して SSH 接続確認
設定が完了したら、tera termにて公開鍵認証での接続を確認する
tera termを起動し、「ホスト」、「TCPポート」を入力し、「OK」を選択
セキュリティ警告画面が出たら、「続行」を選択
「ユーザー」を入力し、「秘密鍵」に作成した「id_rsa」を選択後、「OK」を選択
接続が成功すれば完了
SSH パスワード接続を無効化
公開鍵認証にしたため、パスワードでの接続を無効化する
設定を間違えた場合を考慮して最後にこの設定を記載しているが、
sshd_configの変更の際に設定しても問題ない
configファイルの変更
vi /etc/ssh/sshd_config
PasswordAuthentication yes
>> PasswordAuthentication no # パスワード接続無効
sshサービスの再起動
systemctl restart sshd
コメントはありません。