ドメインに対してさまざまなキーとユーザーを試すようにSSHプロファイルを設定しようとしています。もともと私はこれを行うためにドットファイルの関数を使用しましたが、それは薄くてゆっくりと見苦しくなりました。
当社には、SSHログイン用のユーザーと秘密鍵が異なる複数のサーバーがあります。ホスト名は多いですが、ドメインは常に同じです。
マスターレコードで必要なキー/ユーザー名のペアを参照できますが、楽しいことはありません。
これは私のSSH設定ファイルの一部です。
Host *.companydomain.net
User ubuntu
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_a.pem
Host *.companydomain.net
User ubuntu
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_b
Host *.companydomain.net
User anotheruser
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_c
これで、最初の項目(使用key_a.pem
)が試行されてから失敗し、何も失敗しないようです。理想的には、これが失敗してログインが成功するまで、3つの組み合わせをそれぞれ試したいと思います。
私はOpenSSH_7.6p1を実行しているmacOSを実行しています。
ありがとうございます!
答え1
マニュアルには複数のディレクティブがありIdentityFile
、リストされているすべてのファイルが使用されているため、最初の2つの項目を組み合わせることができます。
Host *.companydomain.net
User ubuntu
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_a.pem
IdentityFile ~/.ssh/key_b
ただし、1回の呼び出し(または1回のSSH接続)で複数のユーザー名を試すことはできないため、ssh
スクリプトを作成する必要があります。
3番目のアイテムを他のアイテムと一緒に配置すると、IdentityFile
スクリプトが長すぎる必要はなく、次のようになるはずです。
#!/bin/sh
for user in ubuntu anotheruser; do
ssh -l "$user" "$@" && break;
done
(User
この場合は設定ファイルからディレクティブを削除してください。)