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