SSH サーバーが別のソースからの公開鍵をチェックする

SSH サーバーが別のソースからの公開鍵をチェックする

キー認証による 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_authorizedkeysLDAP クライアントには、ユーザーの sshPublicKey 属性からキーを取得するためのツールがすでに含まれています。

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody

関連情報