当我启动 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 &