是否可以使用控制主机 sshsession 重新启动隧道?

是否可以使用控制主机 sshsession 重新启动隧道?

我有很多机器,我使用类似于以下内容的配置文件创建隧道:

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

我使用以下脚本启动隧道:

/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" &

(该脚本中的变量并不那么重要。iproutetunnelsetup 脚本在对等方上执行类似的操作并确保接口已启动)

这一切都进展顺利,直到连接中断导致隧道接口崩溃,但 ssh 会话仍处于打开状态。

除了对接口执行 ping 操作或对数据包进行计数之外,是否有方法可以确定 ssh 声称的点对点隧道是否真正正常工作。我曾以为(希望)隧道会像端口转发一样工作,并且只是附加到现有实例,但似乎每个实例只能有一个隧道,并且隧道没有“-O Cancel”命令。

;tl;博士

我可以对 ssh 实例运行任何命令来停止隧道,同时保持 ssh 会话打开吗?

相关内容