パスワードなし!公開鍵認証でSSHログイン
概要
rsync を Jenkins や crontab で利用する場合
SSH 経由で実行する際、
パスワードを求められ処理が中断してしまうということがあるかと思います。
その為、SSH で公開鍵認証という方法でパスワードを求めることなく
SSH アクセスできる様な設定を明示的にしました。
以下まとめます。
環境
- 接続元サーバ A の global IP を 192.168.11.200 とします。
- 接続先サーバ B の global IP を 192.168.11.201 とします。
サーバ A → サーバ B へ 公開鍵認証で SSH ログインを目的とします。
以下手順です。
接続元サーバ A
公開鍵作成
1 | [host A]# mkdir ~/.ssh |
接続先サーバ B
1 | [host B]# cd ~ |
接続元サーバのアクセス許可設定
- /etc/hosts.allow を編集し 接続元 IP 許可設定する。
1 | [host B]# vi /etc/hosts.allow |
1 | # |
公開鍵認証許可設定
- バックアップ保存
1 | [host B]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk |
- 修正
1 | [host B]# vi /etc/ssh/sshd_config |
1 | #PubkeyAuthentication yes ← コメントアウトを外す |
- 差分確認
1 | [host B]# diff /etc/ssh/sshd_config.bk /etc/ssh/sshd_config |
- sshd configure チェック
1 | [host B]# sshd -t |
- sshd リスタート
1 | [host B (CentOS7)]# systemctl restart sshd |
以上で接続先サーバでの準備完了しました。
接続元サーバ A から パスワードなしで SSH 接続する
1 | [host A]# ssh 192.168.11.201 |
ログイン成功!
ログイン失敗する場合
- ログを調査しましょう。
権限や所有権がよろしくない、
ということで認証失敗理由がわかります。
1 | # tail -f /var/log/secure |
あとがき
以下デフォルトの sshd_config
の設定の場合
パスワード認証と鍵認証、どちらも認証パス可能です。
1 | #PubkeyAuthentication yes |
インフラ専門の会社さんや街の噂では
デフォルトでどちらも認証 OK にしている企業さん多いという話でした。
以上です。
パスワードなし!公開鍵認証でSSHログイン
https://kenzo0107.github.io/2016/04/04/2016-04-05-ssh-login-without-password/