저는 여러 환경에 대한 여러 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
....