YリモートユーザーにログインするときにX SSHキーを使用しますか?

YリモートユーザーにログインするときにX SSHキーを使用しますか?

特定のユーザー名を使用してリモートホストにログインするときに特定のSSHキーを設定する方法を探しています。 SSH設定ファイルでこれを達成できますか?

たとえば、

ユーザー名「testuser」として「id_rsa-test」キーを使用します。

ssh testuser@host1
ssh testuser@host2
ssh testuser@host3

他のすべてのユーザーには「id_rsa」キーを使用してください。

ssh root@host1
ssh admin@host2
ssh [email protected]

これを設定する方法はありますか?

答え1

@xhienneありがとうございます(コメントリンク) ご提案ありがとうございます。

ssh_configに以下を追加すると問題が解決したようです。

Match User testuser
  IdentityFile ~/.ssh/id_rsa-test

このブロックは、テストユーザーに事前に送信するためHost *に一番上に配置する必要があります。id_rsa-testid_rsa

答え2

OpenSSHを使用していると仮定すると、~/.ssh/configファイルごとにファイルを整理でき、ユーザーも指定する必要はなく、自分で作成できます。

host host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test

その後、これはssh host1自動的に行われます。またはhost1他のユーザーでもあるため、次のことができます。

host test-host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test
    Hostname host1

それからssh test-host1

必要なすべてのホストに対して同じ操作を実行できます。

ssh_config(5)ファイル内のエントリと一致しないすべてのホストは、デフォルトの動作を使用するか、グローバル設定、つまりホストブロック内にないssh_configで指定されたデフォルト値を使用します。

ssh_configはユーザー名の一致をサポートしていませんが、それを検出するシェルスクリプトを作成できます。以下は、ユーザー名/ホストが常に最初の引数であると仮定し、そうでないと中断されるbashの脆弱な例です。

ssh() {
    if [[ "$1" =~ ^testuser@ ]]; then
        command ssh -i ~/.ssh/id_rsa-test "$@"
    else
        command ssh "$@"
    fi
}

関連情報