正規表現のSSH代替キーを設定する方法

正規表現のSSH代替キーを設定する方法

ドメインに対してさまざまなキーとユーザーを試すように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この場合は設定ファイルからディレクティブを削除してください。)

関連情報