web-dev-qa-db-ja.com

SSHおよびホームディレクトリの権限

私の学校のサーバーにある私のクラスアカウントの1つを使用して、このSSHの問題を解決するには数時間かかりました。

パスワードを入力せずに特定のクラスアカウントにSSH接続することはできませんでしたが、パスワードなしの認証は他のクラスアカウントで機能しました。 .ssh /ディレクトリとそのすべてのコンテンツには、他のクラスアカウントと同じ正しい権限がありました。

問題は、自分のホームディレクトリに設定されたアクセス許可でした。 HOMEディレクトリーのアクセス権が770に設定されている場合(.ssh /に設定されたアクセス権に関係なく)、パスワードなしの認証は機能しませんでしたが、755または700に設定されたアクセス権では機能しました。

なぜSSHがこれを行うのか知っていますか?これは、ホームディレクトリの権限が許容範囲を超えているためですか?ホームディレクトリが700よりも許容度が高く設定されている場合、SSHが公開鍵/秘密鍵による認証を拒否するのはなぜですか?

57
action_potato

これは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を定義することでこの動作をオーバーライドできますが、これは非推奨であることは明らかです。

58
George M

ホームディレクトリの77xは、正しいGIDを持つすべてのユーザーが.sshディレクトリを移動して、別のディレクトリに置き換えることができることを意味します。正しいGIDを持つユーザーは、ホームディレクトリに対する書き込み/実行権限を持っているため、ファイル/ディレクトリの名前を変更/作成できます。

SSHは、アクセス許可に関して非常にうるさいので、そうするべきです。

31
jippie