在 Linux 上保持 SSH 会话活动


介绍

安全外壳 (SSH) 是一种网络协议,允许两个系统之间进行安全的远程连接。它通常用于远程访问和管理 Linux 服务器。但是,使用 SSH 的问题之一是,您的会话可能会因停机或网络中断而终止。这可能会令人沮丧,尤其是在您正在处理需要不间断连接的长时间运行的任务时。在本文中,我们将讨论在 Linux 上保持 SSH 会话活动的不同方法。

使用 ClientAlive Interval 选项

防止 SSH 会话因闲置而关闭的一种方法是使用 **“ClientAliveInterval”** 选项。此选项以指定的间隔向服务器发送空数据包以保持连接活动。

要使用 ClientAliveInterval 选项,您需要编辑 SSH 服务器配置文件,通常位于“/etc/ssh/sshd_config”中。在文本编辑器中打开该文件并添加以下行:

ClientAliveInterval 60

这将每 **60** 秒向服务器发送一个空数据包以保持连接活动。可以将间隔设置为适合您需求的值。进行更改后,保存文件并重新启动 SSH 服务器以使更改生效。在大多数系统上,您可以使用以下命令执行此操作:

$ sudo systemctl restart ssh

您可以通过检查位于“/var/log/auth.log”处的日志文件来验证 **ClientAliveInterval** 开关是否正常工作。您应该会看到类似于以下内容的消息:

Jan 4 2023 10:30:01 server sshd[29445]: Connection from 192.168.43.1 port 5676
Jan 4 2023 10:30:01 server sshd[29445]: ClientAliveInterval 60

Learn Linux/Unix in-depth with real-world projects through our Linux/Unix certification course. Enroll and become a certified expert to boost your career.

使用 Nohup 命令

保持 SSH 会话活动状态的另一种方法是使用 **nohup** 命令。**nohup** 命令允许您在后台运行命令,即使您注销了 Keeping SSH session alive on Linuxv 系统后也是如此。如果您需要执行需要不间断连接的长时间运行的任务,这将非常有用。

要使用 **nohup** 命令,只需在要运行的命令前加上“nohup”并将输出重定向到文件即可。例如:

$ nohup mycommand > mycommand.out 2> mycommand.err < /dev/null &

这将在后台运行“mycommand”命令并将输出重定向到“mycommand.out”和“mycommand.err”文件。“< /dev/null”部分将 stdin(标准输入)重定向到 /dev/null,允许命令在不等待输入的情况下运行。“&” 结尾将命令置于后台。

要检查命令的状态,可以使用“jobs”命令。这将显示系统上正在运行的所有后台进程的列表。

$ jobs
[1]+ Running nohup mycommand > mycommand.out 2> mycommand.err < /dev/null &

要将后台作业调到前台,可以使用 **“fg”** 命令,后跟作业编号。例如

$ fg %1

这将调出第一个后台作业(在本例中为“mycommand”)。

使用 Screen 命令

保持 SSH 会话活动状态的另一种方法是使用 **screen** 命令。screen 命令允许您创建可以独立于主终端运行的虚拟终端会话。如果您需要同时运行多个任务或希望在注销系统后保持任务运行,这将非常有用。要使用 screen 命令,只需在终端提示符下键入“screen”并按 Enter 键即可。这将创建一个新的虚拟终端会话。然后,您可以在 screen 会话中运行任何所需的命令。

要注销 screen 会话,请使用键盘组合 **“Ctrl+a”**,然后按 **“d”** 键。这将带您回到主终端,但 screen 会话将继续在后台运行。

要重新连接到 screen 会话,请使用 **“screen -r”** 命令。将显示可用 screen 会话的列表,您可以选择要重新连接的会话。

以下是一个示例,说明如何使用 screen 命令保持 SSH 会话活动状态:

$ screen
[screen is now running]
$ <execute few commands>
[ctrl+a d]
[detached from screen]
$ screen -r
[screen session restored]

结论

在本文中,我们讨论了在 Linux 上保持 SSH 会话活动状态的几种方法。使用 ClientAliveInterval 开关、nohup 命令或 screen 命令,您可以确保您的 SSH 会话保持活动状态,并且您的任务可以不间断地运行。有了这些工具,您可以轻松地远程管理 Linux 服务器,并在处理长时间运行的任务时保持工作效率。

更新于: 2023-01-17

15K+ 阅读量

启动您的 职业生涯

通过完成课程获得认证

开始
广告