公開鍵認証を使ってLinuxへSSH接続する設定をしていて、いろいろとはまったのでメモをしておく。
必要なこととして以下の3つがある。
- SSH接続を受け付ける側(リモート)のLinuxのsshd_configで、公開鍵接続を許可する設定にする。
- SSHクライアント側(ローカル)でキーペアを作り、公開鍵ファイルをリモートの適切な位置に配置。
-
~/.ssh
ディレクトリなど鍵情報を置いたディレクトリやファイル、リモート側のユーザのホームディレクトリのパーミッションを適切に設定する。
1つ目、2つ目についてはすぐに情報が見つかったが、3つ目についてネット上になかなか情報が見つからず、なかなか公開鍵を使った接続ができなくて困った。
1つめ、2つめについては以下[1]の記事の通りにやればOK。なお、公開鍵のコピーは[2]の記事にあるようにssh-copy-idを使う方が楽。
[1] http://kazmax.zpp.jp/linux/lin_sshrsa.html#ah_1
[2] http://qiita.com/iruseira/items/af8550fea92b5c5f7fca
そして、3つ目のパーミッションの設定は以下のURLに記載があった。
[3] http://unix.stackexchange.com/questions/36540/why-am-i-still-getting-a-password-prompt-with-ssh-with-public-key-authentication
ここの回答から要約すると
- リモートマシンのホームディレクトリ
~
、鍵ファイルを置く~/.ssh
ディレクトリ、および公開鍵ファイル~/.shh/authorized_keys
の書き込み権限は、ディレクトリおよびファイルのオーナーユーザのみが持って良い。 - すなわち、
rwx------
(700)とかrwxr-xr-x
(755)はOKだがrwxrwx---
(770)はダメ。 - ローカルマシン上の秘密鍵ファイルの読み込み権限は、そのファイルのオーナユーザのみとすること。つまり
rw-------
(600)とする。
~/.ssh
ディレクトリに制約があるのは頷けるが、リモートのホームディレクトリのパーミッションに制約があるのが意外だった。これに気付かずにしばらくはまっていた。