나는 autossh witt를 30 초의 폴링 시간으로 시작했다.
AUTOSSH_POLL=30 AUTOSSH_LOGLEVEL=7 autossh -M 0 -f -S none -f -N -L localhost:34567:localhost:6543 user1@server1
그리고 잘 작동합니다.
Sep 5 12:26:44 serverA autossh[20935]: check on child 23084
Sep 5 12:26:44 serverA autossh[20935]: set alarm for 30 secs
그러나 네트워크 케이블을 물리적으로 제거하면 터널이 더 이상 작동하지 않으므로 autossh는 ssh 데몬을 종료하지 않습니다. 왜? 링크가 다운되면 autossh가 아무것도 할 수 없지만 내 의견으로는 다음을 수행해야한다고 이해합니다.
- 자식 ssh 프로세스 확인 (
check on child ...
) - 원단을 확인하십시오 !!! (터널을 통한 핑과 같은 작업)
- 터널이 다운되었음을 인식
- ssh 프로세스를 중지하십시오
- 터널을 다시 생성하십시오
- 작동하지 않는다는 것을 인식하고 (지수 적으로 증가합니까?) 타이머를 설정하여 곧 다시 확인하십시오.
이것이 내가 autossh를 실행하는 이유입니다. 터널에 문제가 발생하면 (소프트웨어 또는 하드웨어 문제 일 경우) 다시 시작해야합니다. 대신 ssh 프로세스가 종료되기를 기다리는 중입니다. 연결을 재설정 할 희망이 없어도 다시 시작하려고해서는 안됩니까?
어떤 종류의 검사가 autossh를 수행합니까? ssh가 작동하고 있는지 확인하십시오. 원단 검사를하지 않습니까?
편집하다
요청에 따라 ssh 구성의 관련 부분을 추가합니다.
# (see http://aaroncrane.co.uk/2008/04/ssh_faster)
# The ServerAliveInterval tells SSH to send a keepalive message every 60 seconds while the connection is open;
# that both helps poor-quality NAT routers understand that the NAT table entry for your connection should
# be kept alive, and helps SSH detect when there’s a network problem between the server and client.
ServerAliveInterval 60
# The ServerAliveCountMax says that after 60 consecutive unanswered keepalive messages, the connection should
# be dropped. At that point, AutoSSH should try to invoke a fresh SSH client. You can tweak those
# specific values if you want, but they seem to work well for me.
ServerAliveCountMax 60
TCPKeepAlive yes
dev tun
설치 remote
하여 설치'하고 클라이언트 구성의 설정과 설정 을 모두 사용하여 서버 또는 클라이언트의 기본 구성으로 시작했습니다 . 성가신 유일한 것은 인증서를 관리하는 것입니다. OpenVPN과 함께 제공되는 'easy-rsa'CA를 사용합니다. 인증서가 있으면 나머지는 쉽습니다.