
キー認証による SSH 接続では、ユーザーは使用したい公開キーの ID を送信します。次に、サーバーは authorized_keys ファイルで公開キーをチェックします。
サーバーが authorized_keys ファイルでその ID を検索するのではなく、ユーザー名を使用して別のソース (データベース、別のファイル、リモート サーバーなど) からキーを取得するようにしたいと思います。
それは可能ですか?
答え1
変更するにはファイルパス、指定することができます承認済みキーファイルsshd_config のオプション (サーバーが OpenSSH を実行していると仮定)。ユーザーのホーム ディレクトリからの相対パス、または%u
ユーザー名まで拡張した絶対パスのいずれかで、複数のパスを指定できます。
たとえば、デフォルトのauthorized_keysの場所を維持し、追加/etc 内のファイル:
AuthorizedKeysFile .ssh/authorized_keys /etc/ssh/users/%u.txt
使用するには外部コマンドサーバーがOpenSSH 6.2以降を使用している場合は、以下を指定できます。承認されたキーコマンドサーバーの sshd_config ファイルで、カスタム プログラムまたはスクリプトを指定します。
プログラムはログインごとに実行され、コマンドライン パラメータとしてユーザー名を受け取り、そのユーザーのキーのリスト (authorized_keys と同じ形式を使用) を stdout 経由で出力する必要があります。
たとえば、LDAPを使用している場合は、SSSDsss_ssh_authorizedkeys
LDAP クライアントには、ユーザーの sshPublicKey 属性からキーを取得するためのツールがすでに含まれています。
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody