学校のサーバーにあるクラスアカウントの1つでこのSSHの問題を解決するのに何時間もかかりました。
パスワードを入力せずに特定のクラスアカウントにSSHで接続することはできませんでしたが、パスワードなしの認証は他のクラスアカウントで機能しました。 .ssh /ディレクトリとそのすべてのコンテンツには、他のクラスアカウントと同じ正しい権限がありました。
問題は、自分のホームディレクトリに設定されたアクセス許可であることが判明しました。ホームディレクトリのアクセス許可が770に設定されている場合(.ssh /に設定されているアクセス許可に関係なく)、パスワードなしの認証は機能しませんでしたが、755または700に設定されたアクセス許可では機能しました。
SSHがこれを行う理由を知っている人はいますか?ホームディレクトリのアクセス許可が許容範囲を超えているためですか?ホームディレクトリが700よりも許容度が高く設定されているのに、SSHが公開/秘密鍵での認証を拒否するのはなぜですか?
承認された回答:
これはSSHのデフォルトの動作です。 rwx------
を適用してユーザーキーを保護します $HOME/.ssh
で 所有者のみが$HOME
への書き込み権限を持っていることを確認します 。それぞれの所有者以外のユーザーが$HOME
への書き込み権限を持っている場合 ディレクトリでは、$HOME/.ssh
の権限を悪意を持って変更する可能性があります 、ユーザーキーを乗っ取る可能性があるknown_hosts
、または同様のもの。要約すると、$HOME
に対する次の権限 SSHが機能するには十分です。
-
rwx------
-
rwxr-x---
-
rwxr-xr-x
SSHは正しく機能せず、g+w
のバリエーションがある場合、ログ機能に警告を送信します またはo+w
$HOME
に存在します ディレクトリ。ただし、管理者はStrictModes no
を定義することで、この動作をオーバーライドできます。 sshd_config
内 (または同様の)構成ファイル。ただし、これは推奨されないことは明らかです。 。