또는

또는

내 일반적인 프로세스는 다음과 같습니다.

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_useron 으로 변경되지 않았기 때문에 비밀번호를 묻습니다 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를 수행할 수 없는 유일한 이유입니다(리모컨이 비밀번호를 묻는 유일한 이유).

관련 정보