내 SSH 터널 설정은 다음과 같습니다.
ssh -N -L 1105:remote.server:25 office-machine&
예를 들어 1분마다 한 번씩(크론 작업을 사용하여 수행할 수도 있음) 확인을 설정하는 스크립트를 작성하고 싶습니다. 이 스크립트는 이 연결이 설정되었는지 확인하고 그렇지 않으면 연결을 설정합니다(VPN이 켜져 있는 경우). .
SSH 터널 검사를 어떻게 수행합니까?
미리 감사드립니다.
추신: 나는 노력했다
autossh -N -L 1105:remote.server:25 office-machine&
하지만 그만뒀어요. 옵션이 맞는지 의심스럽습니다. 실제로 맨페이지/도움말에는 -N 및 -L 옵션이 없고 -f 및 -M 옵션만 있음을 나타냅니다.
답변1
autossh
이런 목적 으로 사용할 수 있습니다 . 인용하다우분투 맨페이지:
autossh is a program to start a copy of ssh and monitor it, restarting it as necessary
should it die or stop passing traffic.
The original idea and the mechanism were from rstunnel (Reliable SSH Tunnel). With version
1.2 of autossh the method changed: autossh uses ssh to construct a loop of ssh forwardings
(one from local to remote, one from remote to local), and then sends test data that it
expects to get back. (The idea is thanks to Terrence Martin.)
따라서 추가 모니터링 포트를 지정해야 합니다 autossh
. N과 N+1이 모두 사용 가능하도록 일부 포트 N을 선택하고 다음 -M
과 같은 옵션과 함께 사용하십시오.
autossh -M 20000 -N -L 1105:remote.server:25 office-machine
모니터링 비활성화를 사용할 수도 있습니다 -M 0
. Debian 기반 시스템에서는 autossh
모니터링을 위해 무료 포트를 자동으로 선택할 수 있습니다.
VPN 연결이 중단된 경우 autossh
포트를 모니터링하여 SSH 연결이 더 이상 유효하지 않음을 감지하고 다시 시작해야 합니다. 이후:
Continued failures
If the ssh connection fails and attempts to restart it fail in quick succession, autossh
will start delaying its attempts to restart, gradually backing farther and farther off up to
a maximum interval of the autossh poll time (usually 10 minutes). autossh can be "prodded"
to retry by signalling it, perhaps with SIGHUP ("kill -HUP").