Eu tenho um monte de máquinas que eu crio túneis para usar um arquivo de configuração semelhante ao seguinte:
Host mygizmo-tun143
HostName 1.2.177.16
HostKeyAlias [1.2.177.16]:6000
User tunneluser
Port 6000
ServerAliveInterval 15
ServerAliveCountMax 4
Tunnel point-to-point
TunnelDevice 143:0
IdentityFile /home/tunnels/.ssh/id_dsa
UserKnownHostsFile /home/tunnels/.ssh/known_hosts
ConnectTimeout 10
ControlMaster auto
ControlPath /var/sshsessions/mygizmo-tun143
ControlPersist yes
e eu inicio o túnel com o seguinte script:
/bin/tunctl -u $USER -t $LOCAL_INTERFACE
/bin/ip link set $LOCAL_INTERFACE down
/bin/ip addr add $LOCAL_ADDRESS/30 peer $PEER_ADDRESS dev $LOCAL_INTERFACE
/bin/ip link set $LOCAL_INTERFACE mtu 1300
/bin/ip link set $LOCAL_INTERFACE up
/usr/bin/ssh -n -T -F "$SSH_CONFIG_PATH" "$SSH_TUNNEL_HOST" "sudo /opt/sbin/iproutetunnelsetup $REMOTE_INTERFACE $PEER_ADDRESS $LOCAL_ADDRESS" &
(as variáveis nesse script não são tão importantes. O script iproutetunnelsetup faz uma coisa semelhante no peer e garante que a interface seja iniciada)
Isso tudo funciona perfeitamente, até que haja uma interrupção na conexão que estraga a interface do túnel, mas deixa a sessão do ssh aberta.
Fora do ping da interface ou contagem de pacotes, existe uma maneira de saber com certeza que um túnel ponto-a-ponto proposto pelo ssh para funcionar está realmente funcionando. Eu tinha pensado (esperava) que os túneis funcionariam como port forwards e apenas seriam colocados na instância existente, mas parece que você só pode ter um túnel por instância e não há nenhum comando "-O Cancel" para túneis.; tl; dr
Existe algum comando que eu possa executar contra uma instância ssh que irá parar um túnel mantendo a sessão do ssh aberta?
Tags ssh ssh-tunneling