在Linux上保持SSH会话Alive

在Linux上保持SSH会话Alive

介绍

安全壳(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

使用Nohup命令

另一种保持SSH会话的方法是使用nohup命令。nohup命令允许你在后台运行一个命令,甚至在你注销了Linuxv系统上的保持SSH会话活力。如果你需要执行一个长期运行的任务,需要一个不间断的连接,这可能很有用。

要使用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”)。

使用屏幕命令

另一种保持SSH会话的方法是使用screen命令。screen命令允许你创建虚拟的终端会话,可以独立于主终端运行。如果你需要同时运行多个任务,或者你想在注销系统后继续运行一个任务,这可能很有用。要使用screen命令,只需在终端提示符下输入 “screen “并按回车键。这将创建一个新的虚拟终端会话。然后你可以在屏幕会话中运行任何你想要的命令。

要退出屏幕会话,使用组合键 “Ctrl+a”,然后是 “d “键。这将使你回到主终端,但屏幕会话将继续在后台运行。

要重新连接到一个屏幕会话,使用 “screen -r “命令。会出现一个可用的屏幕会话列表,你可以选择你想重新连接的那个。

$ 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服务器,即使在处理长期运行的任务时也能保持生产力。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Linux 基础