SSH構成でユーザーとホストの両方を一致させます。

SSH構成でユーザーとホストの両方を一致させます。

それで、私は複数のコンピュータを管理し、簡単にアクセスできるように各コンピュータにエイリアスを設定しました。

SSHクライアント構成のすべてのユーザーに対して、これは次のとおりです。

Host MACHINE-1075 M1075 m1075 1075
    User service
    HostName 10.0.100.75

そして:

Match User service
    IdentityFile ~/.ssh/service_user

入力するだけで、ssh 1075正しいIDファイルとユーザーがいるシステムに自動的に入力できます。

これは一般的なアクセスに適しています。しかし、時には特定のタスクを実行するためにrootとしてログインする必要があるかもしれません。 IDファイルを明示的に指定することでこれを行うことができますssh root@1075 -i ~/.ssh/root_user

大丈夫ですが、そうです。本物ssh root@1075私がやりたいことは、正しいタスクを入力して実行できるようにするユーザーとホストの組み合わせで必要なIDファイルを特定するようにSSHを設定することです。 rootユーザーのすべての目的を一致させ、それをIDファイルにリンクできることを知っています。

Match User root
    IdentityFile ~/.ssh/root_user

ただし、私の場合は、異なるルートアクセス資格情報を必要とする可能性がある複数のコンピュータセットがあり、すべて一致しないため、この方法は機能しません。理想的に私がやりたいことは次のとおりです。

Match Host 10.0.100.75 && Match User root
    IdentityFile ~/.ssh/root_user

しかし、これはうまくいかないようです。一時的な解決策として、単にエイリアスをroot-コンピュータのプレフィックスとして追加することでこれを行うことができましたssh root-1075。悪くはありませんでしたが、まさに私が望むものではありませんでした。

これは、OpenSSH 8.4を実行しているUbuntu 21.10で行われました。

ベストアンサー1

IMHO 完全には明確ではありませんが、man ssh_config複数の条件を一致させる構文は次のとおりです。

Match keyword [pattern|pattern-list] keyword [pattern|pattern-list]

ここで、パターンはpattern-listカンマで区切られますが、キーワードパターンのペアは単純なスペースで区切られます。

Match Host 10.0.100.75 User root

&&AND論理を理解するにはすべての条件を満たす必要があるため、このような明示的な論理演算子はサポートされていません。

おすすめ記事