프로그래밍 방식으로 SSH 터널을 엽니다.
sshpass -p "my_password" ssh -fN -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes remote_user@remote_server.tld -L 13306:127.0.0.1:3306 sleep 3
예상대로 작동하지만 3초 동안 활동이 없으면 닫히지 않습니다.
sleep
연결이 완료되면 SSH PID를 가져와 명시적으로 종료하지만 터널이 자동으로 닫힐 수 있다면 이 버전을 선호합니다 .
터널을 열어 두세요 sshpass
. 아니면 제가 뭔가 잘못하고 있는 걸까요?
답변1
당신은 사용하고 있습니다
-f
명령이 실행되기 전에 SSH에 백그라운드로 들어가도록 요청합니다. 이는 ssh에 비밀번호나 패스프레이즈가 필요하지만 사용자가 이를 백그라운드에서 실행하기를 원하는 경우에 유용합니다. 이는 -n을 의미합니다. 원격 사이트에서 X11 프로그램을 시작하는 권장 방법은 ssh -f host xterm과 같은 명령을 사용하는 것입니다.
그리고
-N
원격 명령을 실행하지 마십시오. 이는 포트 전달에 유용합니다.
명령을 실행하기 전에 백그라운드로 이동합니다(억제됨). 그래서 백그라운드에 남아있습니다. 결코 실행 되지 sleep
않고 죽기를 기다립니다.