내 일반적인 프로세스는 다음과 같습니다.
ssh jumphost
sudo -iHu jump_user
ssh target_user@targethost
Do some task
ProxyCommand를 사용하여 이 작업을 어떻게 수행합니까? 나는 시도했다:
ssh target_user@target_host -o ProxyCommand="ssh jumphost 'sudo -iHu jump_user' nc -w 120 %h %p"
target_user
하지만 사용자가 jump_user
on 으로 변경되지 않았기 때문에 비밀번호를 묻습니다 jump_host
. 어떻게 하나요? 나의 궁극적인 목표는 이것을 사용하여 ansible_ssh_common_args
대상 서버에서 작업을 실행할 수 있도록 하는 것입니다.
답변1
나에게는 다음이 필요한 것 같습니다.
ssh -t jumphost 'exec sudo -iHu jump_user exec ssh target_user@targethost'
ProxyCommand
이는 네트워크 연결만 제공하지만 사용자를 열어야 하는 경우 액세스해야 하는 개인 키를 jumphost
나타내며 , 이 경우 해당 사용자로 실행 jump_user
해야 합니다 .ssh
가장 좋은 것은 아마도 이것을 피하고 추가하는 것입니다.당신의authorized_keys
자신의 키를 사용 target_user@targethost
하면 다음과 같이 할 수 있습니다.
ssh -j jump_host target_user@targethost
답변2
.ssh/config
점프 호스트에 파일을 만듭니다.
Host targethost
User target_user
아니면 귀하의 설정에 적합한 것이면 무엇이든 가능합니다. Keepalives, 프록시 전달, 멀티플렉싱 등과 같은 기타 설정도 여기에서 구성하여 생활을 더 쉽게 만들 수 있습니다.
man ssh_config
검토하려는 문서입니다.
답변3
Jumphost에 연결할 때: 사용자를 변경합니다 ssh jumpuser@jumphost
. 이렇게 하려면 Jumphost에 공개 키를 등록하여 설정해야 합니다 ~jumpuser/.ssh/authorized_keys
.
또는
Jumpuser의 개인 키를 사용자에게 복사합니다. 이 키가 없다는 것은 사용자가 ssh를 수행할 수 없는 유일한 이유입니다(리모컨이 비밀번호를 묻는 유일한 이유).