1.概要
LinuxサーバーのメンテナンスにSSHを使うことが多いと思いますが
デフォルトの設定だと、パスワード認証の為セキュリティーが高いとは言い難いです。
今回は秘密鍵と公開鍵を組み合わせた【SSH公開鍵認証方式】の設定をしてみます。
2.鍵ペアの作成
まずは下記のコマンドで鍵のペアを作成します。
途中でパスワードを聞かれますので、必要に応じて設定します。
設定しなくてもOKですがパスワードを設定するとより強固なセキュリティーになります。
鍵は暗号化方式が【RSA】で鍵長が【4096】にしました。
[root@localhost ~]# ssh-keygen -t rsa -b 4096 -f test_key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in test_key. Your public key has been saved in test_key.pub. The key fingerprint is: SHA256:vTKmnN49NZVBGoZDyZ2+tdwXGPyTC2mR6yVqXFPsJpU root@localhost The key's randomart image is: +---[RSA 4096]----+ | o.++o+ .| | =.oB.E | | o. @o.| | . .@+O | | S o ==Bo+| | =+.o.o| | + o. . .| | . = +. | | .= . .. | +----[SHA256]-----+
3.公開鍵の登録
サーバーに公開鍵を登録します。
まずは公開鍵を配置するためのディレクトリを作成します。
[root@localhost ~]# mkdir .ssh
このディレクトリ名は固定となってます。
次にディレクトリのパーミッションを【700】に設定します。
[root@localhost ssh]# chmod 700 .ssh
先程作成した公開鍵を使用できるようにします。
[root@localhost ~]# cat test_key.pub >> .ssh/authorized_keys
【authorized_keys】パーミッションを【600】に設定します。
[root@localhost ~]# chmod 600 .ssh/authorized_keys
公開鍵を削除します。
[root@localhost ~]# rm test_key.pub
rm: remove regular file ‘test_key.pub’?
鍵認証でログインできるように【sshd_config】を編集します。
[root@localhost ~]# vi /etc/ssh/sshd_config
PubkeyAuthentication yes
sshdを再起動します。
[root@localhost ~]# systemctl restart sshd.service
4.秘密鍵の取得
作成した秘密鍵をクライアント側へ転送します。
今回は【tera term】の機能を使って取得します。
【ファイル】→【SSH SCP】をクリックします。
【FROM:】に先程作成した【test_key】と入力し【Receive】をクリック
これで秘密鍵を取り出すことが出来ました。
取り出したので秘密鍵は削除しておきます。
[root@localhost ~]# rm test_key
rm: remove regular file ‘test_key’?
5.SSH鍵認証で接続してみる
【tera term】を起動し【SSH認証画面】で
【RSA/DSA/ECDSA/ED25519鍵を使う】を選択し秘密鍵に先程作成した秘密鍵を選択します。
【ユーザー名】は【root】
パスフレーズに鍵ペアを作成した時のパスワードを入力し【OK】をクリックします。
これで設定に問題がなければ公開鍵認証方式のSSH接続は完了です。
6.パスワード認証でのSSH接続を禁止にする
[root@localhost ~]# vi /etc/ssh/sshd_config
PasswordAuthentication no
sshdを再起動します。
[root@localhost ~]# systemctl restart sshd.service
これでパスワード認証が無効化されました。