我有一个无头的Ubuntu服务器。我在Mac上通过SSH在服务器上运行命令(snapraid sync)。该命令表示需要大约6小时,所以我把它留了一夜。
当我今天早上下来时,Mac上的终端说:“写失败:破管”
我不确定命令是否完全执行。这是超时问题吗?如果是这样,我怎样才能在一夜之间保持SSH连接?
答案 0 :(得分:47)
这应解决Mac OSX版本的问题:10.8.2
添加:
ServerAliveInterval 120
TCPKeepAlive no
到这个文件:
~/.ssh/config
或者,如果您希望它是SSH客户端的全局更改,请this file
/私有的/ etc / ssh_config中
“ServerAliveInterval 120”基本上表示每隔120秒用一个NULL数据包“ping”服务器,而“TCPKeepAlive no”表示不设置SO_KEEPALIVE套接字选项(因为你不需要它已经设置了ServerAliveInterval,显然它是“可欺骗的”或有些奇怪的。
服务器同样可以设置相同的效果(ClientKeepAliveInterval),但通常你无法控制这些设置。
答案 1 :(得分:22)
您可以使用“screen”util。只需通过SSH连接到服务器,通过“screen”命令执行启动屏幕会话,在那里启动命令并断开连接(不要退出屏幕会话)。当您认为您的命令已经完成时,您可以连接到服务器并附加到您可以看到命令执行结果/进度的屏幕会话(如果有的话)。
有关详细信息,请参阅“man screen”。
答案 2 :(得分:6)
这应该解决ubuntu和linux mint的问题 添加:
ServerAliveInterval 120
TCPKeepAlive yes
要 / etc / ssh / ssh_config文件
答案 3 :(得分:4)
而不是屏幕我建议使用tmux,(可以说)更好competitor来屏幕
tmux new-session -s {name}
该命令创建会话。之后的任何时候你想要连接:
tmux a -t {name}
答案 4 :(得分:2)
有两种解决方案
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
echo "ServerAliveInterval 60" >> ~/.ssh/config
答案 5 :(得分:1)
如果在编辑/ etc / ssh / sshd_config后仍然遇到问题,或者〜/ .ssh / config 根本就不存在您的计算机上,那么我强烈建议您重新安装ssh。该解决方案花了大约一分钟的时间来解决“管道损坏”错误和“被远程主机关闭”错误。
sudo apt-get purge openssh-server
sudo apt update
sudo apt install openssh-server
答案 6 :(得分:0)
jeremyforan的回答是正确的,但我发现如果您尝试使用 scp ,则必须明确指向配置文件,如上所述,它似乎不遵守正常配置层次结构。例如:
scp -F ~/.ssh/config myfile joe@myserver.com:~
有效,省略-F仍会导致管道错误。
答案 7 :(得分:0)
尝试更改sshd_config中的许多上述参数(ClientAliveInterval,ClientMaxCount,TCPKeepAlive ...)后,没有任何变化。我花了数小时和数天的时间在论坛和博客上寻找解决方案...
看来,禁止与ssh / sftp连接的管道损坏的问题来自ChrootDirectory上的权限设置。 ChrootDirectory必须以755权限由root / root拥有 较低的权限765/766/775 ...不起作用,但权限较高的角色(例如700) 如果需要授予连接用户的写权限,则可以在子目录中授予它。 如果chroot由sftpUser:sftpGroup拥有,则两者都不起作用...
chroot-> root:root 755
|
---subdirectories-> sftpUser:sftpGroup 700 up to 770
希望这会有所帮助
答案 8 :(得分:-1)
Ubuntu:
ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1 user@x.x.x.x
答案 9 :(得分:-2)
我使用带有两条互联网输入线的华硕路由器。我指定我的IP到某一行,它可以工作。