ssh -i '/home/ehud/.ssh/my-secret2.pem' …
ssh -o 'IdentityFile=/home/ehud/.ssh/my-secret2.pem' …
上記のコマンドのいずれかがロードされますmy-secret2.pem
最初のファイルをしますが、複数のIDファイルを指定することができるので(参照man 1 ssh
、-i
オプション)、ファイルmy-secret1.pem
、あなたに与えられたssh_config
意志がおそらくも試されます。これが必要な場合とそうでない場合があります。
あなたはこれでOKなら、あなたは指定することができますmy-secret2.pem
経由でssh_config
次のコードを追加することによって、前にHost 172.30.*
あなたが既に持っているブロック:
# Special hosts, new identity file.
Host 172.30.10.*
IdentityFile /home/ehud/.ssh/my-secret2.pem
man 5 ssh_config
言う:
各パラメーターについて、最初に取得された値が使用されます。構成ファイルには、Host
仕様で区切られたセクションが含まれ、そのセクションは、仕様で指定されたパターンのいずれかに一致するホストにのみ適用されます。一致するホスト名は、コマンドラインで指定されたものです。
各パラメーターについて最初に取得した値が使用されるため、ファイルの先頭近くでより多くのホスト固有の宣言を、最後に一般的なデフォルトを指定する必要があります。
一度しか指定できないパラメータについては、最初に特別なホストに一致し、172.30.*
後で範囲全体に一致するので十分です。明らかではありませんIdentityFile
が、複数のファイルを指定できるため、「最初に取得した値が使用されます」は実際には適用されません。特別なホストがファイルを使用しないようにするにmy-secret1.pem
は、感嘆符(!
)の使用に関する追加の知識が必要です。
のスニペットの例ssh_config
:
# Special hosts, new identity file.
Host 172.30.10.*
IdentityFile /home/ehud/.ssh/my-secret2.pem
# Non-special hosts, old identity file.
Host 172.30.* !172.30.10.*
IdentityFile /home/ehud/.ssh/my-secret1.pem
# Special and non-special hosts, like in your old config.
# Note there is no IdentityFile line here anymore.
# If there was, it would apply to special and non-special
# hosts, despite some previous IdentityFile line alrady loaded.
Host 172.30.*
ControlMaster auto
ControlPath ~/.ssh/cm_socket/%r@%h:%p
ServerAliveInterval 60
TCPKeepAlive yes
ProxyCommand ssh -i /home/ehud/.ssh/my-secret1.pem -q -A ubuntu@some.public.ip nc %h %p
ControlMaster auto
ControlPath ~/.ssh/mux-%r@%h:%p
ControlPersist 8h
User ubuntu
たとえば、ssh -v 172.30.10.22
(特別なホスト)の場合、次のように表示されます。
debug1: /etc/ssh/ssh_config line X: Applying options for 172.30.10.*
debug1: /etc/ssh/ssh_config line Y: Skipping Host block because of negated match for 172.30.10.*
debug1: /etc/ssh/ssh_config line Z: Applying options for 172.30.*
およびssh -v 172.30.99.33
(非特殊ホスト)は次を印刷します。
debug1: /etc/ssh/ssh_config line Y: Applying options for 172.30.*
debug1: /etc/ssh/ssh_config line Z: Applying options for 172.30.*
したがって、どちらの方法でも1つの.pem
ファイルのみが使用されます。
の-F
オプションもありますssh
。からman 1 ssh
:
-F configfile
代替のユーザーごとの構成ファイルを指定します。構成ファイルがコマンドラインで指定されている場合、システム全体の構成ファイル(/etc/ssh/ssh_config
)は無視されます。ユーザーごとの構成ファイルのデフォルトは~/.ssh/config
です。
これにより、まったく異なる設定を手動で読み込むことができます。
multiple users
、User
パラメーターを使用して何かをしたいかのように表示されます。しかし、あなたの質問の本文はそれが約であることを示唆していますIdentityFile
。私はあなたが正しかったことを望み、私の答えは有用です。