É possível reiniciar túneis com um mestre de controle sshsession?

1

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?

    
por Peter Turner 12.10.2017 / 18:18

0 respostas