But if I physically remove the network cable, meaning the tunnel can not be working anymore, autossh does not kill the ssh daemon. Why?
O autossh é executado em sua máquina cliente, portanto, não pode matar diretamente o processo do daemon ssh no servidor. No entanto, você pode especificar um valor diferente de zero para ClientAliveInterval
em /etc/ssh/sshd_config
no servidor (consulte man sshd_config
) e reiniciar o serviço sshd no servidor para aplicar a alteração de configuração. Em seguida, no caso de uma desconexão de rede, o processo do daemon ssh será eliminado após ClientAliveInterval * ClientAliveCountMax
segundos (mas não por autossh).
Agora, se você quisesse perguntar "Por que o autossh não mata o processo do cliente ssh?" , você especificou -M 0
. Na página de manual do autossh:
Setting the monitor port to 0 turns the monitoring function off, and autossh will only restart ssh upon ssh's exit
.
Em vez de usar o autossh para monitorar a conexão, você está esperando que o ssh saia após um tempo limite de ServerAliveCountInterval * ServerAliveCountMax
segundos. Você solicitou 60 verificações de servidor vivo antes de ssh, com um intervalo de 60 segundos separando as verificações consecutivas, então você estará esperando uma hora antes do seu cliente ssh sair.
Você também pode considerar usar a opção ExitOnForwardFailure
no lado do cliente (veja man ssh_config
), para que o ssh seja encerrado se não puder estabelecer um túnel, e então o autossh pode tentar iniciar o ssh novamente.