如何保持SSH连接不关闭?

16 浏览
0 Comments

如何保持SSH连接不关闭?

我试图运行一个可能需要1个小时或更长时间的命令,我尝试添加以下代码:

while sleep 300; do echo "1"; done

这样就不会因为长时间未操作而断开连接,这个方法有效。但是有时仍会因为其他原因断开连接,提示连接到*.*.*.*的远程主机关闭。我猜这可能是一个默认的时间限制或其他原因,我不太清楚。

有没有办法增加这个时间限制,或者让它永远不会断开连接?

如果没有,是否有办法在关闭ssh连接后继续运行该命令?

0
0 Comments

如果你无法更改服务器设置,你应该通过指定频繁的保持活动信号来启动ssh,以允许你的命令完成。例如,

ssh -o ServerAliveInterval=20 myname.com

应该每20秒向服务器发送一个“活动”信号,以保持连接活动。

问题的出现原因是由于SSH连接的超时设置,当连接在一段时间内没有活动时会自动关闭。这可能会导致连接中断,使得无法完成必要的操作。

解决方法是通过在SSH连接中发送保持活动信号来保持连接的活跃状态。可以通过在ssh命令中使用-o ServerAliveInterval=20参数来指定发送活动信号的频率。这样,每隔20秒,会向服务器发送一个活动信号,以防止连接关闭。

通过这种方法,可以确保SSH连接保持活动状态,从而避免连接意外关闭的问题。这对于需要保持长时间连接的操作非常有用,例如远程服务器管理或长时间运行的命令操作。

0
0 Comments

SSH连接关闭的原因是超过了指定的超时时间。解决方法是在SSH客户端和服务器之间发送保持活动的请求,以防止连接关闭。可以通过设置服务器上的`ServerAliveInterval`和`ServerAliveCountMax`选项来实现这一点。

`ServerAliveInterval`选项指定了发送保持活动请求的时间间隔。默认情况下,该选项的值为0,表示禁用保持活动功能。如果将其设置为一个正整数值,表示每隔指定的秒数发送一次保持活动请求。

`ServerAliveCountMax`选项指定了发送保持活动请求后,如果服务器没有响应的次数。默认情况下,该选项的值为3,表示如果服务器连续3次没有响应,则关闭连接。可以将其设置为一个更大的值,以延长连接关闭的时间。

以下是设置`ServerAliveInterval`和`ServerAliveCountMax`选项的示例命令:

ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=5 user@host

上述命令将每隔60秒发送一次保持活动请求,如果服务器连续5次没有响应,则关闭连接。

另外,在使用SSH客户端时,还可以通过在`ssh_config`文件中设置这些选项来实现全局的保持活动功能。在`/etc/ssh/ssh_config`或`~/.ssh/config`文件中添加以下行:

ServerAliveInterval 60
ServerAliveCountMax 5

这样,所有的SSH连接都会使用相同的保持活动设置。

通过设置`ServerAliveInterval`和`ServerAliveCountMax`选项,可以保持SSH连接的活动状态,防止连接关闭。这在需要长时间保持连接的情况下特别有用,比如远程登录或文件传输。

0
0 Comments

如何保持SSH连接不断开?

对我来说,SSH连接经常会中断。下面的解决方案对我有用,现在SSH连接始终保持活跃。

从服务器端:

1. 编辑文件`/etc/ssh/sshd_config`:

$ sudo vi /etc/ssh/sshd_config

2. 在文件中添加或启用以下行:

ClientAliveInterval 60

3. 保存文件并重新启动sshd服务:

$ sudo service sshd restart

从本地机器/客户端:

1. 编辑文件`/etc/ssh/ssh_config`:

$ sudo vi /etc/ssh/ssh_config

2. 在文件中添加以下行:

ServerAliveInterval 60

3. 保存文件。

关于这些参数:

- `ServerAliveInterval`:客户端在发送空包到服务器之前等待的秒数(保持连接活动)。

- `ClientAliveInterval`:服务器在发送空包到客户端之前等待的秒数(保持连接活动)。

重要提示:在对生产环境进行任何修改时,请务必先创建备份。

0