SSHのバカヤロ〜

SSHでログイン出来ない不可解な現象がどうにも解決しなかったのだが、ようやく原因らしきものが見えた。

■現象
OpenSSHはopenssh-4.3p2-19.fc6を使用。
全て同一ホスト内で試している。DSA認証を利用。
aというユーザからbというユーザにはログイン出来る。こんな感じ。

ssh b@hoge
Enter passphrase for key '/home/a/.ssh/id_dsa':
Last login: Mon May 27 01:06:39 2007 from hoge

で、~b/.sshに置いてある公開鍵を~c/.sshにコピーして、パーミッションも同じにしてログインすると....

ssh c@hoge
Enter passphrase for key '/home/a/.ssh/id_dsa':
Permission denied (publickey,gssapi-with-mic).

と怒られてログイン出来ない。
.sshディレクトリ(700)や公開鍵(600)のパーミッションはbとcで同じなのにだっ!!

ちなみにsshを実行する際に-vvvというオプションを付けるとデバッグメッセージが表示される。そのメッセージは、

debug1: Authentications that can continue: publickey,gssapi-with-mic
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-with-mic).

という感じ。(最後の部分だけ抜粋した)

■原因
いろいろ試した結果、問題はユーザのホームディレクトリに対するパーミッションだったのだ。
bユーザ(/home/b)は700なのだが、cユーザ(/home/c)は770にしてある。もちろんグループに対して書き込み権限を付けたいからだ。ところがこの状態だとログイン不可になる。
bユーザのホームディレクトリを試しに770に変えたところ同じエラーでログイン出来なくなった。(涙)
じゃ、何かい?! いくら.sshパーミッションを700にしても、その上位が異なるパーミッションだと許さないってか?


バグじゃろこれって? もし仕様だとしたら、 そんなの運用に不都合が出るに決まってるだろー!