2016年6月1日水曜日

MacBookAirのsshdに公開鍵をつかって接続する

 以前からMacBookAirにsshでログインするとき、パスワード入力しなければ、いけないのが不満でしかたなかった。たとえば、FreeBSDからscpするようにしても自動で接続できない。パスワードを入力しなければ、いけなかった。公開鍵を設定してもうまくいかない。
 これがFreeBSDからFreeBSDへならできるように設定できたのだが。
 というのも。
 ネットでちょっと調べてみたら、「/etc/ssh/sshd_config」の設定はMacでは有効ならない、という——それをうっかり、1年間も鵜呑みにしてしまっていたのだ。馬鹿である。そんなことはなかった。日本語のサイトではなく、ちゃんと英語のサイトをあたるべきだった。
 ただし「OS X Yoremite」ではsshd_configの場所は「/etc/sshd_config」だった。1
 下記を設定。

PasswordAuthentication no

 これで公開鍵を「~/.ssh/authorized_keys」に入れやれば、基本はOKなのだが、各種ファイルパーミッシュンをきちんと設定しなければ、まずかった(思いっきりはまった)。man sshdをあらためて見たら書いてあったわ……。2

If this file, the ~/.ssh directory, or the user's home directory are writable by other users, then the file could be modified or replaced by unauthorized users.  In this case, sshd will not allow it to be used unless the StrictModes option has been set to ``no''.

 ちなみに「/etc/sshd_config」に

ChallengeResponseAuthentication no

 を設定すれば、公開鍵なしではアクセスできなくなる。「yes」(デフォルト)の場合は公開鍵が設定してなかったらパスワード入力を聞いてくるのだけれど。

Footnotes:

1

ちゃんとファイルは存在した。

2

ログを見れば、すぐにわかったのに——Macだと、「コンソール」をひらけば、システムログを確認することができた。