Linux
SSH
公開鍵認証方式

公開鍵認証でパスワード入力を省略する

More than 1 year has passed since last update.

ローカルで起動しているサーバにログインする際

毎回パスワードを入力するのが面倒なので、公開鍵認証を使用して省略します。


環境


  • 端末A(Ubuntu17) ー接続する側

  • 端末B(CentOS7) ー接続される側

Linux以外でも多分同じ。


公開鍵認証で接続するための4ステップ

スライド2.JPG


  1. 「接続する側」で秘密鍵と公開鍵を作る。

  2. 1で作った公開鍵を「接続される側」に送る。

  3. 「接続される側」で、送られてきた公開鍵をauthorized_keysファイルに登録(追記)する。

  4. 「接続する側」から「接続される側」にSSH接続し、パスフレーズを入力。

これ以降はSSHなどで接続した時、パスワードを聞かれなくなります。


公開鍵認証で使用する3つのファイル

スライド1.JPG


実際にやってみる


「接続する側」で秘密鍵と公開鍵を作る

まず端末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で一旦抜けて、再度接続してみてください。

パスワードを聞かれなければ公開鍵認証成功です。


補足

接続できない場合は以下の点を確認してください。


参考

公開鍵暗号 - wikipedia

https://www.pistolfly.com/weblog/2007/02/ssh.html