如何防止ssh
ubuntu 上连接客户端出现 Broken Pipe 错误?
假设slurm
服务器上正在运行,而我刚刚发出了一个salloc
请求。如果连接中断,恢复会话(例如)对我的命令已被取消的screen
事实没有任何作用。我现在必须启动另一个队列。有没有办法防止客户端的管道中断,因为编辑文件虽然可以降低风险,但并不能保证安全?salloc
slurm
.ssh/config
答案1
除了众所周知的客户端解决方案之外,不幸的是,这并不能阻止服务器在一段时间不活动后关闭连接,其中包括以下几行
ServerAliveInterval 30
ServerAliveCountMax 240000000
在里面
/home/username/.ssh/config
文件并重新启动sudo systemctl restart ssh
,我发现下面的方法效果很好。通过使用xdotool
sudo apt update
sudo apt install xdotool
可以写一个no_more_broken_pipes.sh
文件,其中包含以下内容
NBP() {
while true
do
sleep 10
xdotool key Return
done
}
跑步的时候,也就是
source no_more_broken_pipes.sh
NBP
它会每十秒钟按一次回车键,无论你在做什么,直到您使用 中止它ctrl+c
。
只要您专注于正确的终端,服务器就会每十秒接收一次输入(sleep 10
),因此即使您去度假,连接也不会中断。如果使用回车键不是一个好主意,该xev
工具将帮助确定在命令上写什么,以便按下更安全的键。
警示故事
在执行此操作的同时,你还应该阻止任何弹出窗口(任何类型的)出现。我包括登录屏幕(例如i3lock
)、可用的更新消息、其他东西。对我来说,只要仅涉及一个终端, 是个全屏的i3
(通常Super_L+f
):它会自动阻止(对我来说到目前为止一直是这样)关注新窗口。