それで、私は複数のコンピュータを管理し、簡単にアクセスできるように各コンピュータにエイリアスを設定しました。
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
論理を理解するにはすべての条件を満たす必要があるため、このような明示的な論理演算子はサポートされていません。