시스템 시작 시 SSH 역터널을 시작하고 싶습니다. 아래 줄은 터널을 잘 설정하도록 해줍니다. 그러나 결국에는 server
원하지 않는 방식으로 로그인하게 됩니다. 특히 init 스크립트에서는 로그인하지 않게 됩니다.
/usr/bin/autossh -M 22222 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/my/key.key -R 9999:localhost:22 ubuntu@server
man autossh
-f
이 옵션이 내 요구 사항에 적합해야 한다고 말합니다 .
SSH를 실행하기 전에 autossh가 백그라운드로 이동하도록 합니다.
하지만 문제는 명령을 변경해도 작동하지 않는 것 같다는 것입니다 usr/bin/autossh -f -M...
. 또한 다음과 같이 초기화 스크립트의 일부로 이 작업을 시도했습니다.
#! /bin/sh
### BEGIN INIT INFO
### END INIT INFO
case "$1" in
start)
echo "Starting autossh"
/usr/bin/autossh -M 22222 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/the.key -R pppp:localhost:22 user@server
;;
stop)
echo -n "Shutting down utossk"
/usr/bin/killall -KILL autossh
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
하지만 이를 백그라운드에 두는 옵션이 필요합니다. -f 옵션이 작동하지 않으면 어떻게 해야 합니까?
답변1
당신이 찾고있는 것은 -N
옵션입니다. SSH 매뉴얼 페이지에서:
-N 원격 명령을 실행하지 않습니다. 이는 포트 전달에 유용합니다.
완전한 명령은 다음과 같습니다:
/usr/bin/autossh -M 22222 -f -N -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/my/key.key -R pppp:localhost:22 user@server
이것은 또한 내가 ( cron 과 함께 @reboot
) 성공적으로 사용하고 있는 것이기도 합니다. 사용하려는 로컬 포트로
바꾸십시오 .pppp: