FreeBSDのサーバに、MacやWindowsからパスワードなしでssh接続するための設定メモ。
目次
サーバの設定
/etc/ssh/sshd_cofig
/etc/ssh/sshd_configを編集し、次の行を追加する。デフォルト値が次の値なので、定義がなければないままでも良い。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
sshd再起動
sshd_configを変更したら、sshdを再起動しておく。
# service sshd restart
鍵ペアの作成 (UNIX/Mac)
鍵ペア作成
ssh-keygenコマンドを使って、鍵ペアを作成する。
user> cd .ssh
user> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
...略...
The key's randomart image is:
+--[ RSA 2048]----+
...略...
+-----------------+
user>
サーバに転送
FTPなどでクライアントからサーバのアカウントにid_rsa.pubをコピーする。
authorized_keysに登録
authorized_keysにid_rsa.pubの内容を追加する。
鍵ペアの作成 (Windows)
- PUTTYgen.exeを起動する。
- パラメータの「生成する鍵の種類」に「SSH-2 RSA」を選択し、「生成する鍵のビット数」に2048を入力する。
- 「生成」ボタンをクリックし、「鍵」の欄でマウスを適当に動かす。
- 「鍵のコメント」にPCが識別できるようにコメントを入れておく。
- 「秘密鍵の保存」ボタンをクリックし、名前を付けてファイル作成する。(例: id_rsa.ppk)
- PuTTYを起動し、セッション定義の「接続 > SSH > 認証」の「認証パラメータ」にある「認証のためのプライベートキーファイル」に、先ほど保存したファイルをフルパスで指定する。
- PuTTYgenの「OpenSSHのauthorized_keysファイルにペーストするための公開鍵」の欄をコピーし、接続先の.ssh/authorized_keysファイルに追加する。
チェックポイント
鍵ペアをインストールしたにもかかわらずパスフレーズを聞かれてしまう場合には、次の点を確認する。
- 各ファイルやディレクトリのパーミションが次のように適切に設定されていること。
- $HOME/.ssh 700
- $HOME/.ssh/authorized_keys 600
- $HOME/.ssh/id_rsa 600
- id_rsa.pubからauthorized_keysにパブリック鍵をコピーするときに改行コードが紛れ込んでいないこと。きちんとコピーすれば1行なのだが、コピー&ペーストでテキストコピーすると途中で勝手に改行コードが入ってしまうことがあり、正常な鍵とみなされなくなる。勝手な改行を防ぐため、ファイルをFTPなどで転送した上でcatを使ってマージするのが良い。
- id_rsa.pubを.sshディレクトリ下に残しておかないこと。このファイルが残っており、かつid_rsaの鍵と一致しない場合には、接続先のauthorized_keysに記述があっても参照されない。
- 不具合調査時には、sshに-vオプションをつけてデバッグ表示させると良い。-vを重ねて使うとデバッグレベルが上がり、最大3までのデバッグ情報が表示可。