SSH는 sshpass를 사용하여 분기할 수 없습니다.

SSH는 sshpass를 사용하여 분기할 수 없습니다.

포트 전달 명령에 sshpass를 사용하는 데 문제가 있습니다. 문제는 한 서버에서는 작동하지만 다른 서버에서는 작동하지 않는다는 것입니다. 둘 다 Debian 7 x64 머신입니다.

sshpass -p password ssh -f -D 0.0.0.0:2002  -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=debug [email protected] -T -N

이 명령은 서버 1에서는 문제 없이 실행되지만 서버 2에서는 작동하지 않습니다.

실패한 서버 디버깅의 출력:

Authenticated to 5.5.5.5 ([5.5.5.5]:22).
debug1: Local connections to 0.0.0.0:2002 forwarded to remote address socks:0
debug1: Local forwarding listening on 0.0.0.0 port 2002.
debug1: channel 0: new [port listener]
debug1: forking to background

작업 서버의 디버그 출력:

Authenticated to 5.5.5.5 ([5.5.5.5]:22).
debug1: Local connections to 0.0.0.0:2002 forwarded to remote address socks:0
debug1: Local forwarding listening on 0.0.0.0 port 2002.
debug1: channel 0: new [port listener]
debug1: forking to background
debug1: Entering interactive session.

sshpass 및 ssh 바이너리는 두 서버 모두에서 동일합니다. md5sum을 사용하여 이것을 확인했습니다.

무엇이 잘못될 수 있는지 아는 사람이 있나요? 나는 이 미스터리를 풀려고 정신을 잃었습니다.

답변1

긴 이야기 짧게

이것은 나에게 효과적입니다.

sshpass -p password nohup ssh -f ... >/dev/null


글쎄, 나도 정신을 잃고 있어요.
Debian 호스트 간에 차이가 발생합니다.SSH패스작동 여부는 CPU 코어 수에 따라 다릅니다. 이 문제는 단일 코어 호스트에서 발생합니다. 누구랑 놀까스트레스보여주다SSH패스수신 후 시스템에 의해 프로세스가 종료됩니다.한숨을 쉬다. 멀티 코어 호스트에서 포크SSH프로세스를 설정하는 데 충분한 시간이 있습니다.한숨을 쉬다핸들러가 죽지 않도록 처리합니다.
해결 방법으로 다음을 사용할 수 있습니다.북면실행할 유틸리티SSH패스그래서 안 죽는다한숨을 쉬다.

관련 정보