다중 홉에 sshpass 사용

다중 홉에 sshpass 사용

.ssh/config게이트웨이를 통해 호스트에 연결하는 데 사용하고 싶습니다 . RSA 키를 설정하고 싶지 않고 비밀번호를 사용해야 합니다. 나는 이전에 비밀번호 없이 이런 종류의 점프를 해본 적이 있습니다. 이제 비밀번호로 이 작업을 수행해 보세요.

나에게 도움이 된 직접 명령은 다음과 같습니다.

sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" myusername@myip

게이트웨이에서 키 인증을 설정했으며 자세한 내용은 .ssh/config에 있습니다. 에서 설정하기 위해 .ssh/config다음을 시도했습니다.

Host h_act
      <username, hostname, port etc.>
      ProxyCommand ssh gateway -W %h:%p
Host h
      ProxyCommand sshpass -p mypassword ssh h_act

그러나 시도하면 을 ssh h얻습니다 Pseudo-terminal will not be allocated as stdin is not a terminal. SSH를 사용하려고 하면 -vtt이상한 메시지가 표시되지만 터미널은 표시되지 않습니다. ProxyCommand 체인이 있거나 netcat/ncProxyCommand 체인이 하나만 있을 때 ssh -W작동한다는 것을 알고 있습니다. 하지만 여기서는 작동하지 않습니다. sshpass 없이 마지막 명령을 시도하더라도 동일한 오류가 발생합니다. 나는 이것이 후속 명령에 대한 ProxyCommand의 일부 기대와 관련이 있다고 생각하지만 이를 구현할 수는 없습니다.

어떤 아이디어가 있나요?

답변1

귀하의 구성이 해당 줄과 동일하지 않다고 생각합니다. 다음과 같습니다.

ssh -o ProxyCommand='sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" h_act' myusername@myip 

즉, sshpassProxyCommand 내에서 실행 중입니다.

그러나 나는 이것이 작동하지 않을 것이라고 생각합니다. 클라이언트를 의사 터미널에 sshpass래핑하여 ssh암호가 실제로 파일이나 최종 사용자 입력이 아닌 다른 것에서 나온다는 사실을 숨깁니다. 이렇게 하려면 ssh클라이언트가 실행되기 전에 실행되어야 합니다.

첫 번째 코드 줄이 작동하지만 매번 입력하고 싶지 않은 경우 sshpass셸 스크립트로 래핑할 수 있습니다.

#/bin/sh
sshpass -f passwordfile ssh -o ProxyCommand="ssh gateway -W %h:%p" "$@"

그런 다음 그런 것을 실행하십시오 sshscript myusername@myip.

그런데, 사용하지 마세요. sshpass -p클라이언트(및 )가 실행되는 동안 출력에 비밀번호가 표시됩니다. 환경을 통해 비밀번호를 전달하거나 파일에서 비밀번호를 읽는 것이 더 좋습니다.pssshsshpasssshpass -esshpass -f file

관련 정보