IdentityFile에 지정된 SSH 구성 ID는 ForwardAgent에 의해 전달되지 않습니다.

IdentityFile에 지정된 SSH 구성 ID는 ForwardAgent에 의해 전달되지 않습니다.

저는 여러 환경에 대한 여러 SSH 키가 있는 환경에서 작업하고 있습니다. 모두 요새 호스트를 사용합니다. 즉, 모든 환경의 모든 상자에 SSH를 통해 연결할 수 있습니다. 두 단계 점프로 첫 번째는 요새로, 두 번째는 요새로 이동합니다. 요새 대상 상자와 내 SSH ID가 항상 나와 함께 있어야 했습니다.

ssh와 .ssh/config 모두 현재 모든 SSH ID를 요새 호스트로 전달하여 그곳에서 재사용할 수 있는 옵션이 있다는 것을 알고 있습니다.

ssh -A IPADDRESS그리고ForwardAgent

IdentityFile또한 .ssh/config 에는 연결하려는 호스트에 따라 사용할 SSH 키를 지정할 수 있는 옵션이 있다는 것을 알고 있습니다 . 그러나 내가 알아차린 것은 IdentityFile 옵션에서 사용되는 모든 ID는 사용되지 않는다는 것입니다. ForwardAgent이를 배스천 호스트로 전달하지만 키 없이는 다음 상자로 SSH를 보낼 수 없습니다.

지금까지 이 작업을 수행할 수 있었던 유일한 방법은 사용해야 하는 ID를 수동으로 추가한 ssh-add ~/.ssh/id_rsa[1-10]다음 ForwardAgent또는 를 사용하여 ssh를 사용하는 것입니다 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를 사용해 보셨나요? 다음과 같이 연결하고 싶다고 가정해 보겠습니다.[이메일 보호됨]투명하게 통과하다[이메일 보호됨]계정. 다음 구성으로 이를 달성합니다.

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 

이 설정의 또 다른 장점은 다른 명령(예: git, sshfs, rsync...)이 동일한 자격 증명을 사용하여 요새 호스트를 통해 "직접" Remote.host에 연결할 수 있다는 것입니다.

편집: 설정에서 각 호스트는 동일한 요새를 공유하므로 보다 구체적인 호스트를 추가하기 전에 ProxyCommand를 와일드카드 호스트에서 분리할 수도 있습니다.

Host remote.*
  ProxyCommand ssh bastion.host -W %h:%p
Host remote.host1
  IdentityFile ...
Host remote.host2
   ....

관련 정보