特定のユーザー名を使用してリモートホストにログインするときに特定の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-test
id_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
}