学校サーバーのクラスアカウントを使用してこのSSH問題を解決するのに数時間かかりました。
パスワードを入力しないと、特定のアカウントカテゴリにSSHでアクセスできなくなりますが、他のアカウントカテゴリではパスワードのない認証が機能します。 .ssh/ディレクトリとすべてのコンテンツには、他のクラスアカウントと同じで正しい権限があります。
問題は私のホームディレクトリに設定された権限にあることがわかりました。私のHOMEディレクトリの権限が770に設定されている場合(.ssh /の権限設定に関係なく)、パスワードなしの認証は機能しませんが、権限が755または700に設定されている場合は機能します。
SSHがなぜこのようなことをするのか知っている人はいますか?ホームディレクトリの権限が緩すぎますか?ホームディレクトリの設定が700を超える場合、SSHが公開/秘密鍵を使用した認証を拒否するのはなぜですか?
答え1
これがSSHのデフォルト動作です。所有者だけがディレクトリにアクセスできるように強制し、保証することrwx------
によってこれを行います。その所有者以外のユーザーがディレクトリへの書き込みアクセス権を持っている場合は、悪意のある権限を変更したり、ユーザーキーを奪取したりする可能性があります。要約すると、SSHが機能するには、次の権限で十分です。$HOME/.ssh
$HOME
$HOME
$HOME/.ssh
known_hosts
$HOME
rwx------
rwxr-x---
rwxr-xr-x
g+w
ディレクトリまたはディレクトリ内に変更があると、o+w
SSHは正しく機能せず、ロギングツールに警告が送信されます$HOME
。ただし、管理者は次のように定義してこの動作を上書きできStrictModes no
ますsshd_config
。推奨しない。
答え2
ホームディレクトリの77xは、正しいGIDを持つ誰でも.sshディレクトリを移動して他のディレクトリに置き換えることができることを意味します。正しいGIDを持つユーザーは、ホームディレクトリに対する書き込み/実行権限を持っているため、ファイル/ディレクトリの名前を変更または作成できます。
SSHは権限に関して非常に面倒です。そうする必要があります。