「認証が拒否されました:/home/userディレクトリの無効な所有権またはモード」 - 「無効な」権限にもかかわらず、sshdが認証を受け入れるように強制する方法は?

「認証が拒否されました:/home/userディレクトリの無効な所有権またはモード」 - 「無効な」権限にもかかわらず、sshdが認証を受け入れるように強制する方法は?

何らかの理由でグループ書き込みを可能にするには、一部の特定のユーザーのホームディレクトリが必要です。ただし、SSHキーを使用してそのユーザーにログインしようとすると、sshdは認証を拒否します。必要ホームディレクトリは所有者だけが書くことができます。グループ書き込み可能または完全書き込み可能の場合、sshdは「認証が拒否されました:ディレクトリ/ home / userの所有権またはモードが無効です」という(悪名高い)メッセージで認証を拒否します。

sshdを再コンパイルする以外に他の方法はありますか?ホームディレクトリがグループ書き込み可能であっても、鍵認証は許可されますか?おそらく、sshキーをユーザーのホームディレクトリ以外のディレクトリに入れ、sshdにそのキーを使用するように指示できますか?

答え1

私は解決策を直接見つけました。 :)実際には2つの異なる可能性があります。

1つ目は、ファイルのオプションを(デフォルトは)StrictModesに設定することです。この設定を有効にすると、sshdはユーザーのホームディレクトリに対する権限を適用しません。このアプローチの欠点は、すべてのユーザーにグローバルであることです。noyes/etc/ssh/sshd_config

2番目の方法はAuthorizedKeysCommandオプションを使用することです。特定のユーザー名(最初のパラメーターとしてスクリプトに渡される)に対してそのユーザーの認証キー・ファイルが見つかるたびに出力し、最初のパラメーターの他の値については単にスクリプトを作成する必要があります。単に何も出力しません。それは次のとおりです。

#!/bin/sh
if [ "$1" = "user" ]; then
  cat /usr/local/etc/users_authorized_keys
fi

たとえば、スクリプトがデプロイされている場合は、ファイル/usr/local/libexec/listkeysに次の行を入力する必要があります。/etc/ssh/sshd_config

AuthorizedKeysCommand /usr/local/libexec/listkeys

このソリューションを使用すると、ディレクトリ/home/userへのグループ書き込みが可能になり、他のユーザーにはホームディレクトリの権限が引き続き適用されます。

関連情報