Han*_*nes 4 linux ssh openssh tcp
在 sshd 配置中,您可以指定选项TCPKeepAlive yes。这些包未加密,因此可能被欺骗。随着选项
ClientAliveInterval
ClientAliveCountMax
ServerAliveInterval
ServerAliveCountMax
Run Code Online (Sandbox Code Playgroud)
您可以指定保持活动数据包的间隔和连接断开后的超时时间 (*CountMax)。另请参见此处sshd_config 中的“ServerAliveInterval”和“ClientAliveInterval”选项究竟是做什么的?
有了TCPKeepAlive你只可以启用它。那么发送 TCP-Pakets 的间隔是多少?在多少个不成功的数据包之后,连接被视为断开并关闭?由于默认值为:
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
Run Code Online (Sandbox Code Playgroud)
据我了解:检测和关闭断开/非活动连接仅取决于默认配置中的 TCPKeepAlive 选项。因此,了解这些值非常重要。
OpenSSH 不提供任何调整TCPKeepAlive(由操作系统实现)的原因可能是因为没有可移植的方式来更改其参数;唯一的便携方式是使用setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on_off).打开或关闭它。
在 Linux 上,您可以通过/proc文件系统查看(和更改)默认值,如tcp(7)联机帮助页中所述:
grep -T . /proc/sys/net/ipv4/tcp_keepalive*
/proc/sys/net/ipv4/tcp_keepalive_intvl: 75
/proc/sys/net/ipv4/tcp_keepalive_probes: 9
/proc/sys/net/ipv4/tcp_keepalive_time: 7200
Run Code Online (Sandbox Code Playgroud)
因此,它将等待 2 小时,直到它认为连接空闲,然后以 75 秒的间隔发送 9 个探测。
在 Linux、FreeBSD 和 NetBSD(但不是在 OpenBSD 上)上,您还可以在每个套接字的基础上更改这些选项,
setsockopt(fd, IPPROTO_TCP, TCP_KEEP{CNT,IDLE,INTVL}, &val)
但如前所述,OpenSSH 不会这样做。
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |