ローカルで起動しているサーバにログインする際
毎回パスワードを入力するのが面倒なので、公開鍵認証を使用して省略します。
#環境
- 端末A(Ubuntu17) ー接続する側
- 端末B(CentOS7) ー接続される側
Linux以外でも多分同じ。
#公開鍵認証で接続するための4ステップ
- 「接続する側」で秘密鍵と公開鍵を作る。
- 1で作った公開鍵を「接続される側」に送る。
- 「接続される側」で、送られてきた公開鍵をauthorized_keysファイルに登録(追記)する。
- 「接続する側」から「接続される側」にSSH接続し、パスフレーズを入力。
これ以降はSSHなどで接続した時、パスワードを聞かれなくなります。
#公開鍵認証で使用する3つのファイル
#実際にやってみる
##「接続する側」で秘密鍵と公開鍵を作る
まず端末A「接続する側」で秘密鍵と公開鍵を作るため、
以下のコマンドを実行します。
$ ssh-keygen -t rsa
コマンド実行後パスフレーズの入力を求められます。
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enterキー
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): パスフレーズ入力
Enter same passphrase again: 再度パスフレーズ入力
パスフレーズは忘れたら鍵を作り直さないといけなくなるので注意。
以上の入力が終わって、こんなのが出たら秘密鍵と公開鍵の作成は終了です。
鍵は/home/user/.sshに保存されています。
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
(フィンガープリント)
##「接続される側」に公開鍵を送る
端末A「接続する側」で作った公開鍵を端末B「接続される側」に送ります。
いろんな方法がありますが、今回はscpコマンドを使います。
$ scp ~/.ssh/id_rsa.pub user@host:~
##「接続される側」で、公開鍵を登録する
端末Aから送られてきた公開鍵を登録します。
端末Bに.sshディレクトリがない場合はmkdirなどで作っておきましょう。
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
コマンド実行後は送られてきたid_rsa.pubを削除しても大丈夫です。
##接続する
鍵の登録が済んだのでsshコマンドで公開鍵認証で接続できるか確認しましょう。
最初の接続は鍵を作った際に入力したパスフレーズを聞かれるので入力します。
接続できたらexitで一旦抜けて、再度接続してみてください。
パスワードを聞かれなければ公開鍵認証成功です。
#補足
接続できない場合は以下の点を確認してください。
- ディレクトリ・ファイルのパーミッション
- SELinux
#参考
公開鍵暗号 - wikipedia
https://www.pistolfly.com/weblog/2007/02/ssh.html