屏幕和 SSH 隧道 - 屏幕会话怎么可能终止?

屏幕和 SSH 隧道 - 屏幕会话怎么可能终止?

当我启动 xsession 时,我设置了到 VPS 的 SSH 隧道。

以下是登录时运行的脚本:

matt@HY731AA:~$ more dotfiles/startssh.sh 
#!/bin/sh

ssh-add ~/.ssh/id_rsa
screen -dmS ssh /bin/bash -c ~/dotfiles/keeptunnel.bash
exit

提示输入密钥,然后终端关闭..

这是 keeptunnel.bash

matt@HY731AA:~$ more dotfiles/keeptunnel.bash 
#!/bin/bash

while [ true ]; 
  do    /usr/bin/ssh lin1tunnels > /home/matt/lin1tunnel.log 2>&1 
  sleep 0.4   
  done;

登录后,一切正常,隧道已设置,但是我通过各种挂起/取消挂起等方式让计算机 24/7 处于开启状态。问题是 SSH 隧道偶尔会关闭,所以我认为它只是重新连接或互联网/服务器关闭,但是执行屏幕列表显示筛选会话已(死亡???)并且屏幕已擦除。

我无法理解的是,鉴于 keeptunnels 中的循环,screen 不可能退出?我在 .ssh/config 中为 lin1tunnels 设置了 ConnectTimeout 8 和 ServerAliveInterval 5,但我怀疑这不是问题的根源,因为 screened 会话已终止。

为什么放映会正在消亡?

答案1

一个“死人”屏幕会议通常意味着屏幕服务器进程崩溃。是否发生dmesg/var/log/syslog报告任何段错误或内存不足错误?

你可以更换屏幕tmux或者德塔赫,甚至删除屏幕完全只需在脚本~/dotfiles/keeptunnel.bash &中使用即可startssh.sh


...实际上这两个脚本可以合并:

#!/bin/sh
ssh-add ~/.ssh/id_rsa
while true; do
    ssh -v -N lin1tunnels
    sleep 0.4
done > ~/lin1tunnel.log 2>&1 &

相关内容