CentOS 6.9 を OpenSSH_5.3p1 で実行し、同じホーム ディレクトリ (htdocs にマウント) を持つ外部ユーザー用に chroot されたアカウントを作成しました。問題は、ファイルが.ssh/authorized_keys2
最初のユーザーによって所有されていることです (これはすでに機能しています)。これを別のユーザーでも機能させるにはどうすればよいですか?
複数のファイル パスを使用して sshd_config に追加しようとしましたAuthorizedKeysFile
が、エラーが発生しましたgarbage at end of line
。
AuthorizedKeysFile
2 番目のユーザーの一致ブロックにin を追加しようとしましたsshd_config
が、エラーが発生しました'AuthorizedKeysFile' is not allowed within a Match block
。
ホーム ディレクトリを変更すると、パスが開発用の実際のパスと異なるため、変更できません。
解決方法の提案はありますか? OpenSSH を複数のエントリをサポートする新しいバージョンにアップグレードする必要がありますかAuthorizedKeysFile
(rpm でビルドする必要があると思います)? その後のセキュリティ更新はどうなりますか?
答え1
1 つのオプションは、トークンを使用して各ユーザーに固有のauthorized_keys
ファイルを提供することです。
AuthorizedKeysFile
ユーザー認証に使用できる公開キーを含むファイルを指定します。形式については、の AUTHORIZED_KEYS FILE FORMAT セクションで説明されています
sshd(8)
。AuthorizedKeysFile
%T
接続設定中に置換される 形式のトークンが含まれる場合があります以下のトークンが定義されています:%%
はリテラル に置き換えられ%
、%h
は認証されるユーザーのホームディレクトリに置き換えられ、%u
そのユーザーのユーザー名に置き換えられます. 展開後、AuthorizedKeysFile
は絶対パスまたはユーザーのホーム ディレクトリからの相対パスとして扱われます。 複数のファイルを空白で区切ってリストできます。 または、このオプションを に設定して、none
ファイル内のユーザー キーのチェックをスキップすることもできます。 デフォルトは です.ssh/authorized_keys .ssh/authorized_keys2
。
強調は私によるものです。
したがって、次のように設定できます。
AuthorizedKeysFile .ssh/%u_authorized_keys
次に、ユーザー用にファイルfoo
を作成します。authorized_keys
.ssh/foo_authorized_keys
権限に関する注意
から男のsshd:
~/.ssh/authorized_keys
...
このファイル、ディレクトリ、またはユーザーのホーム ディレクトリが他のユーザーによって書き込み可能である場合、権限のないユーザーによってファイルが変更または置換される可能性があります。この場合、 オプションが に設定されてい~/.ssh
ない限り、sshd はそれを使用できません。StrictModes
no
そのため、キーを の外側に配置する.ssh/
か、StrictModes
に設定する必要があります。 を設定no
すると、他のユーザーが他のユーザーのために を作成したり、他のユーザーの承認済みキーを削除したりできなくなります。おそらく、次のようにするのが最善です。StrictModes
no
authorized_keys
AuthorizedKeysFile .ssh_%u/authorized_keys
読み取り/書き込みのみ可能な.ssh_foo/
ユーザー用のディレクトリを作成します。foo
foo
許可する場合は、以下.ssh/authorized_keys
を使用して選択できます。
AuthorizedKeysFile .ssh/authorized_keys .ssh_%u/authorized_keys
これにより、の「通常の」形式がauthorized_keys
引き続き機能するようになります。authorized_keys
ファイルはユーザーが所有し、適切な権限を持っている必要があります。そうでない場合は無視されます。ただし、別のユーザーのファイルを作成できないようにする必要がありますauthorized_keys
。これは、ルートとしてファイルを操作して空にすることを意味する可能性があります。