先日導入したSynology DS216jに外部からSSHで公開鍵認証で接続できるようにするのに少しハマったのでメモ。
ssh user@host と実行しても繋がらず -vvv オプションで確認するとこんなメッセージが。
.....
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
公開鍵を置いてる.sshフォルダか公開鍵ファイルのパーミッションだと思ってたけど正しい。
ちゃんと.sshフォルダは700、公開鍵ファイルは600にしてる。ユーザもグループも問題なし。
ログファイル/var/log/auth.logを見ても全然参考になる情報なし。
なのでsshdをデバッグモードで起動させてみた。
まずはsshdを停止させる。
synoservicectl --stop sshd
そしてsshdをデバッグモードで起動。
/sbin/sshd -ddd
そしてクライアントからsshでセッションする。するとこんなログが。
debug1: trying public key file /var/services/homes/xxxx/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /volume1/homes/xxxx
原因は単純にSSHで接続するユーザのホームディレクトリのパーミッションでした。
調べると711だった。これを755にして解決。