在ssh登录中停止恼人的会话保持活动消息

时间:2016-03-17 04:44:23

标签: macos ssh

我正在尝试更改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)上,否则我可以返回到之前的设置?

4 个答案:

答案 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 可能是另一个可行的途径。