IdentityFileで指定されたSSH構成IDは、ForwardAgentによって渡されません。

IdentityFileで指定されたSSH構成IDは、ForwardAgentによって渡されません。

私は、複数の環境に対して複数の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
   ....

関連情報