はじめに
LinuxにSSHで毎回ID/PASS入力するのが面倒なので、鍵交換で接続できるようにします。
ID/PASS方式でSSH接続できていることが前提です。以下を参考にさせていただきました。
環境
- 接続元:Windows10
- 接続先:上記のHyper-Vで動いているDebian(ここで作ったもの)
- 接続クライアント:WinSCP + PuTTY
手順
流れとしては、以下の手順で進めます。
- PuTTYgenを使用して秘密鍵、公開鍵を作成
- 接続先マシンの設定変更
- 公開鍵を接続先マシンに配置
秘密鍵、公開鍵の作成
鍵の作成
PuTTYgenを使用して鍵を作成します。
「generate」をクリックして、マウスをぐりぐり動かすと鍵が出来ます。
秘密鍵の保存
「Save private key」で秘密鍵を保存しておきます。ここではid_rsa.ppk
として保存します。
秘密鍵を保存する際、パスフレーズを入力しないと警告が出ます。
パスフレーズは「秘密鍵を使うためのパスワード」みたいなもので、ログイン時に秘密鍵と合わせてパスフレーズが必要になります。今回はそもそもそのパスワード入力が面倒だから鍵交換方式にしようとしているので、パスフレーズは空欄のまま警告を無視して秘密鍵を保存します。
公開鍵の保存
公開鍵は「Save public key」ではなく、画面に表示されているキーをコピペしてテキストファイルに張り付けます。Public key for pasting into OpenSSH authorized_keys file:
と書いてあるところの下の部分ですね。
右クリックして「すべて選択」してからCtrl+C
でコピーするのがよいかと。また、後々のためにファイル名はauthorized_keys2
にしておきます。
鍵が出来たのでPuTTYgenは閉じてOKです。
接続先マシンの設定
接続先のLinuxでは以下の設定が必要です。
- 鍵交換方式のSSHログインを許可する設定
- 作成した公開鍵の設定
鍵交換方式のSSHログインを許可
/etc/ssh/sshd_config
を編集し、設定を変更します。
以下の2行を探してコメントアウトを解除。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
作成した公開鍵の設定
先ほど作成したauthorized_keys2
を、/home/[ログインするユーザー]/.ssh/
以下にコピーします。
中身はただのテキストファイルなので、viなどでコピペしてもいいし、WinSCPでコピーしてもいいです。
SSHの設定を反映
以下のコマンドでsshdを再起動し、設定を反映します。
$ sudo service sshd restart
接続
WinSCPでホスト名とユーザー名を指定します。パスワードは空欄に。
その他
rootユーザーによるSSHログインを許可
まず、sshd_config
を編集してSSHログインを許可します。以下のコメントアウトを解除。
PermitRootLogin prohibit-password
次に、公開鍵を配置します。
rootユーザーのホームは/root
です。公開鍵設定済みのユーザーでログインし、公開鍵を/root/.ssh
以下にコピーします。
$ sudo mkdir /root/.ssh/
$ sudo cp .ssh/authorized_keys2 /root/.ssh/
ID/PASS方式のログインの禁止
これもsshd_config
を編集すればOK。以下をnoに変更。
PasswordAuthentication no
おわりに
これで、PuTTYで毎回パスワードを入力しなくて済むぞー!