虚拟主机域名注册-常见问题 → 其他问题 → 其他问题 | ||||
如果你使用SSH连接到远程Linux服务器,你会注意到,如果你的SSH会话保持一段时间不活动,然后试图再次使用它,SSH会话就会以这样的错误信息断开。 :client_loop: send disconnect: Broken pipe 在某些系统中,它会显示 "Write failed: Broken pipe"或 "Connection closed by remote host"。 让我们看看是什么原因导致这个错误,以及如何去保持你的SSH连接。 用SSH修复broken pipe错误 你可能已经猜到了,SSH连接因为不活动而被关闭。虽然没有设定值,但通常在5分钟左右。 要避免SSH会话断开,您可以做的是从服务器到客户端(ClientAliveInterval)或以一定的时间间隔从客户端到服务器(ServerAliveInterval)发送一条“alive message”。 通过这种方式,可以使SSH会话保持活动状态,因为客户机和服务器之间存在通信,而服务器知道客户机仍然存在。 现在,有两种方法可以做到这一点。要么你从客户端向服务器发送活着的消息,要么从服务器向客户端发送活着的消息。 如果您通过SSH连接到多个服务器,请在您的机器上设置它。 如果你是一个系统管理员,有几个用户抱怨SSH连接频繁断开,你可以在服务器上设置。 方法1:客户端SSH配置更改 假设您想通过最多10分钟(600秒)的空闲时间来保持SSH连接的活动状态 通过SSH连接到远程Linux系统时,您可以提及以下ServerAliveInterval值: ssh -o ServerAliveInterval=600 username@server_ip_address 现在,此功能可以工作,但是每次连接到服务器时手动输入此选项很麻烦。为什么不将其永久化? 我希望你是知道SSH配置文件的。在客户端,你可以利用它为特定连接或所有连接设置某些SSH参数。我在这里详细解释了SSH配置文件。 首先,确保你有ssh配置文件。如果没有,请创建它。 touch ~/.ssh/config 给予它正确的文件权限是很重要的,否则你会在通过SSH连接时出现权限被拒绝的错误。 使用chmod命令并为其添加以下文件许可权: chmod 600 ~/.ssh/config 如果不想看详细介绍,请使用以下命令将有效间隔设置为600秒(10分钟): echo "ServerAliveInterval 600" >>> ~/.ssh/config 这会将您将使用的所有SSH连接的ServerAliveInterval值设置为10分钟。如果需要,请尝试一下。 如果您想使其更合适,则应如下添加: Host * ServerAliveInterval 600 方法2:在服务器端SSH配置更改 服务器的SSH配置文件通常位于/etc/ssh/sshd_config。 如果打开此文件,您将在此处找到两个感兴趣的参数: ClientAliveInterval: 这是不活动时间段,在该时间段后,服务器将向ssh连接的客户端发送活动消息。 ClientAliveCountMax:这是服务器将尝试发送活动消息的次数。 假设您将其设置ClientAliveInterval为200秒,并将ClientAliveCountMax其设置为3。这意味着服务器将在200秒后发送活动消息。如果客户端没有任何活动,它将在400秒后再次发送活动消息。客户端没有响应/活动,并且在600秒后发送了另一个活动消息。此后(600秒),SSH连接断开。 您可以/etc/ssh/sshd_config在喜欢的基于终端的文本编辑器(如Vim)中编辑文件。查找ClientAliveInterval和ClientAliveCountMax条目。删除行开头的#键,并为其指定适当的值。 ![]() 保存并退出文件。 请勿将SSH连接超时设置为几个小时。那会很浪费资源。
|
||||
>> 相关文章 | ||||