我正在尝试更改MAC中的某些设置,以保持我的连接长时间保持活动状态。在一段空闲时间之后自动注销,并显示消息“写入失败:管道损坏”。现在我更改了设置后,每次使用ssh
登录终端时都会收到恼人的消息debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
如何删除此消息以显示在我的终端(MAC)上,否则我可以返回到之前的设置?
答案 0 :(得分:1)
看一下两个地方之一:
1)在〜/ .ssh / config中的mac上 - 可能会设置调试标志
2)在服务器上,因为也可以设置借记标志
答案 1 :(得分:1)
您收到这些消息是因为您在服务器上设置了test_
。当连接在指定的时间间隔内保持空闲状态时,服务器会向客户端发送保持活动状态的数据包。为防止这些消息:
在服务器上,将def test_board_topics_status_code(self):
url = reverse('board_topics', kwargs={id: 1})
response = self.client.get(url)
return self.assertEqual(response.status_code, 200)
增加到足够大的数字(例如480秒)以防止连接超时而不会淹没您的日志。
在客户端上,将def HomeTests(TestCase):
设置为小于服务器class HomeTests(TestCase):
的数字。这将导致客户端保持连接处于活动状态,而不会触发服务器的保持活动超时。
答案 2 :(得分:0)
(其他答案/评论的简易摘要):
在Mac终端中运行,将5
替换为比屏幕上出现新消息的间隔短的秒数:
echo " ServerAliveInterval 5" >> ~/.ssh/config
您可以在此之前检查ServerAliveInterval
行是否已经存在:
cat ~/.ssh/config | grep ServerAliveInterval
(如果看到一行,请改为编辑)。
将在下一轮ssh
上生效。
答案 3 :(得分:0)
您收到这些消息是因为服务器的 ClientAliveInterval
未设置为 0(默认值)。
设置一个以秒为单位的超时间隔,如果没有收到来自客户端的数据,sshd(8) 将通过加密通道发送消息以请求来自客户端的响应。默认为0,表示这些消息不会发送给客户端。
ClientAliveInterval
设置为 0最简单的解决方案是删除服务器上的 ClientAliveInterval
,默认为 0,不发送任何消息。
或者,将值设置为 0。
您通常通过编辑可能位于 /etc/ssh/sshd_config
中的服务器 sshd_config
来完成此操作。更改将在守护程序下次启动时生效。
对于托管服务,it may be a bad idea to set ClientAliveInterval to 0。主要是因为它可以让主机不必要地运行并浪费金钱。
ServerAliveInterval
设置为低于服务器 ClientAliveInterval
如果您无权访问服务器,或者您想以不同方式配置客户端。您可以将 ServerAliveInterval
设置为低于 ClientAliveInterval
的值。然后,ssh
客户端将定期发送重置服务器超时的消息。
您通常通过编辑可能在 ~/.ssh/config
中的客户 ssh_config
来做到这一点。
将 ServerAliveInterval
设置为低于 ClientAliveInterval
,对于大多数意图和目的而言,与没有设置相同。您不会在终端中收到消息。
尽管如此,它允许有趣的配置。您可以打开不同的 ssh
连接,有些是 timeout
,有些不是在与 ClientAliveCountMax
结合使用时,服务器关闭它已发送 n
消息的连接。
这不会阻止发送服务器消息。例如,如果包裹丢失或严重延迟导致消息延迟到达,服务器仍然会发送消息。
大概是将消息发送到 stderr
。重定向和/或过滤 stderr
可能是另一个可行的途径。