在 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 服务器,并在处理长时间运行的任务时保持工作效率。