■ 公開鍵認証とは
* 秘密鍵と公開鍵という鍵ペアを使用する認証方式 * 公開鍵認証では、パスワードを入力しないため、パスワードがネットワーク上を流れることがないため、 パスワードの盗難や推測などの攻撃を防ぐことができる => 逆に鍵が盗まれたらアウト
■ 手順概要
【1】 クライアント用の秘密鍵/公開鍵の生成 【2】 sshd_configの設定 【3】 ファイアウォールの確認 【4】 クライアントに秘密鍵を渡し、サーバ側にSSH接続する
【1】 クライアント用の秘密鍵/公開鍵の生成
クライアント用の秘密鍵/公開鍵の生成(本来、クライアントで行うべき)ssh-keygen -t rsa -b 4096 -C "your_email@gmail.com" # t "鍵の種類" # -b "鍵の長さ" # -C "コメント文(e-mailを入力)" Enter file in which to save the key (/home/user_id/.ssh/id_rsa): (鍵ファイルの設定場所。Enterキー押下) Enter passphrase (empty for no passphrase): (パスフレーズ入力 以下の「★ パスフレーズについて ★」を参照) Enter same passphrase again: (同じパスフレーズ再入力) ★ パスフレーズについて ★ a) クライアント側からサーバにSSH接続でアクセスする際に入力するので覚えておくこと b) パスフレーズは、未入力も可能(AWSみたいにノンパス可能)
問題なければ、~/.ssh配下に「id_rsa(秘密鍵)」「id_rsa.pub(公開鍵)」が生成されるはず。
ls -l ~/.ssh/ 合計 8 -rw-------. 1 user_id user_id 3326 7月 4 21:50 id_rsa <= 秘密鍵 -rw-r--r--. 1 user_id user_id 746 7月 4 21:50 id_rsa.pub <= 公開鍵
【2】 sshd_configの設定
サーバ側の「/etc/ssh/sshd_config」を修正し、SSH公開鍵認証できるように修正sudo vi /etc/ssh/sshd_config修正前
#PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys修正後 (修正例)
PubkeyAuthentication yes <<公開鍵認証の許可するかどうか(yesを指定)>> RSAAuthentication yes <<RSA認証の許可するかどうか(yesを指定)>> # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys <<公開鍵の保存場所を指定>> => 「sudo systemctl restart sshd」で再起動【任意】パスワード認証を無効にする
passwordAuthentication no <<yesをnoへ変更>>
【3】ファイアウォールの確認
sudo firewall-cmd --list-all # services の欄に ssh が入っているか確認 # ssh がなかったら以下を実行 sudo firewall-cmd --permanent --add-service=ssh
【4】 クライアントに秘密鍵を渡し、サーバ側にSSH接続する
* クライアント側がWindowsの場合、Tera Term や Putty 等で SSH接続する => その際、秘密鍵を使う => 【1】でパスフレーズを設定した際は、そのパスフレーズを入力 (決して、OS側のパスワードじゃないことに注意)http://www.server-memo.net/server-setting/ssh/ssh-key.html