私は、複数の環境に対して複数のSSHキーを持つ環境で作業しています。すべて要塞ホストを使用します。つまり、すべての環境のすべてのボックスにSSHを介して接続できます。 2段階のジャンプで、最初のものは要塞に、2番目のものは要塞に移動します。要塞ターゲットボックスと私のSSH IDは常に私と一緒にいる必要がありました。
ssh と .ssh/config の両方で、現在すべての SSH ID を要塞ホストに渡し、そこで再利用するオプションがあることがわかります。
ssh -A IPADDRESS
そしてForwardAgent
IdentityFile
また、.ssh / configには、接続するホストに応じて使用するSSHキーを指定するオプションがあることがわかります。しかし、私が気づいたのは、IdentityFileオプションで使用されるすべてのIDが使用されていないことです。ForwardAgent
これをBaschenホストに渡しますが、キーなしでは次のボックスにSSHを送信できません。
これまでこれを行うことができた唯一の方法は、使用する必要があるIDを手動で追加してから、またはを使用してssh-add ~/.ssh/id_rsa[1-10]
sshForwardAgent
を使用することですssh -A
。ただし、複数のIDを切り替える必要がある場合は、これが痛いかもしれません。
SSH設定ファイルのみを使用してこれらすべてを実行する方法はありますか?
答え1
上記のタスクを実行するよりきれいな方法は、SSH設定を次のようにProxyCommand
使用することです。ProxyJump
Host bastion.host
User user1
IdentityFile ~/.ssh/id_bastion
Host remote.host
User user2
IdentityFile ~/.ssh/id_remote
ProxyJump bastion.host
答え2
以下を行う必要があります。
IdentityFile ~/.ssh/id_bastion
AddKeysToAgent yes
ForwardAgent yes
確認するman ssh_config | less +/AddKeysToAgent
答え3
ProxyCommandを使ってみましたか?次のように接続したいとしましょう。[Eメール保護]透明に通過する[Eメール保護]アカウント。次の構成でこれを達成します。
Host bastion.host
User user1
IdentityFile ~/.ssh/id_bastion
Host remote.host
User user2
IdentityFile ~/.ssh/id_remote
ProxyCommand ssh bastion.host -W %h:%p
この設定のもう1つの利点は、他のコマンド(git、sshfs、rsyncなど)が同じ資格情報を使用して要塞ホストを介して「直接」Remote.hostに接続できることです。
編集:設定では、各ホストは同じ要塞を共有するため、より具体的なホストを追加する前に、ProxyCommandをワイルドカードホストから切り離すこともできます。
Host remote.*
ProxyCommand ssh bastion.host -W %h:%p
Host remote.host1
IdentityFile ...
Host remote.host2
....