帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> Linux服务器中断开连接后如何保持远程SSH会话运行

Linux服务器中断开连接后如何保持远程SSH会话运行

发布时间:2020年05月21日 09:55:32    来源: A5互联

SSH(Secure Shell)是一种端到端的加密网络系统,允许用户从客户端到服务器系统的远程访问。由于它的非对称加密安全系统,即使是在不安全的客户端网络中访问服务器也是相当安全的。但有时由于不活动或网络不好,SSH远程访问可能会断开连接。不管原因是什么,作为Linux服务器的管理员,保持SSH会话和进程在断开连接后继续运行是一项重要的工作。

SSH会话断开连接的原因

简而言之,SSH隧道代理错误,网络超时,使用错误的网络端口,或者甚至没有以root用户身份登录到系统中,也会使您与SSH远程管理断开连接。在这篇文章中,我们将讨论有关SSH的最常见问题。断开连接后如何保持SSH会话和进程运行。

1、使用screen命令继续运行SSH会话

该screen命令是用于SSH管理的最常用和有用的命令。该screen命令可以解决IPv4和IPv6地址的主机名问题。使用root功能,该screen命令可以注销或取消从客户端到服务器端的会话。如果您是Linux SSH的新手,则可以使用以下CLI来帮助您安装和查找该screen命令的手册。

对于Ubuntu:

$ sudo apt install screen

对于OpenSUSE:

$ sudo zypper install screen

对于Arch Linux:

$ sudo pacman -S screen

对于Red Hat Enterprise Linux:

$ sudo yum install screen

安装完成后,开始监控系统启动画面。

$ screen

$ screen --help

获得访问权限后,通过SSH进入服务器,您希望远程获得访问权限。如果您打算从工作站进行长时间的夜间工作,但又不想关闭SSH客户端,则可以使用以下screen命令。这可以分离您的屏幕会话,但不用担心,您启动的任务将完成。

要脱离屏幕,请按Ctrl-A键,然后按Ctrl-D键。您可以随时从终端登录监控工作进度。要重新连接或与现有的会话连接,请使用下面的CLI。

$ screen -r

screen -D -r

2、使用该tmux工具继续运行SSH会话

所述TMUX或终端复用器是一个非常受欢迎的和有用的对程序员和系统管理员工具,允许用户程序之间进行的程序在相同的终端进行切换。要使SSH会话在后台运行,tmux可以是一种非常快速的解决方案。它可以分离并重新附加使进程在后台运行的应用程序。这是tmuxLinux发行版的安装说明。

对于Arch Linux:

$ sudo pacman -S tmux

对于Red Hat Enterprise Linux:

$ sudo yum install tmux

对于Ubuntu:

$ sudo apt-get install tmux

对于OpenSUSE:

$ sudo zypper install tmux

安装之后tmux,启动tmux sessionusing terminal命令。安装不会花费很多时间。完成安装后,即可开始使用tmux。首先tmux,在终端中输入tmux。

$ tmux

如果你需要运行多个终端复用器来保持所有的SSH会话在后台运行,这种情况下,你可能会发现在tmux与tmux之间的切换有困难。以下是切换一个形式的命令行。

$ tmux detach

$ tmux attach

$ tmux attach -t 2

要检查所有的tmux屏幕,请使用tmux列表命令:

$ tmux ls

3、使用该byobu工具继续运行SSH会话

byobu工具主要用于Linux上的远程SSH管理和屏幕监控。它是一个开源软件,可以和tmux或屏幕工具一起使用。通过byobu工具可以看到当前的状态、通知和消息。虽然Ubuntu默认安装了byobu工具。但如果没有,你可以在你的Linux机器中安装。通过检查其他版本的byobu来检查你的系统中是否安装了byobu。

$ byobu --version

然后启用byobu,即使断开连接后,它也有助于使SSH会话在后台运行。

$ byobu-enable

这里用CLI解释一下安装过程。

对于Ubuntu:

$ sudo apt install byobu

对于OpenSUSE:

$ sudo zypper addrepo https://download.opensuse.org/repositories/utilities/openSUSE_Leap_42.3/utilities.repo


$ sudo zypper refresh

$ sudo zypper install byobu

对于Arch Linux:

$ yaourt -S byobu

$ packer -S byobu

对于Red Hat Enterprise Linux:

$ sudo yum install byobu

对于Fedora:

$ sudo dnf install byobu

要开始使用byobu,只需在终端中键入byobu并按Enter。

$ byobu

现在,如果您使用tmux或screen,则可以选择它们之间的任意一种以进行后端协作。

$ byobu-select-backend

现在,你可以使用系统键盘上的功能键来管理和保持SSH会话在断开连接后的后台运行。要与byobu一起使用SSH,请按键盘上的CTRL+SHIFT+F2来启用SSH环境。要向前或向后移动你的SSH会话,你可以使用ALT+UP和ALT+DOWN。

要断开SSH会话的连接,请按键盘上的F6。现在,如果你想分离但不断开会话,那么你可以这样做。要断开SSH会话并仍然连接,按SHIFT+F6。这里还有一个额外的键盘命令给你。要只保持当前屏幕会话的活动,并关闭所有其他窗口,请按ALT+F6。

4、使用nohup命令继续运行SSH会话

nohup或'no hangup'命令是一个非常有用的替代工具。它还允许用户在SSH会话被断开后仍能继续运行。nohup命令通过避免信号挂起(sighup),告诉系统在后台运行所有进程。

要检查nohupLinux终端上的手册和功能,请在终端上键入以下命令,然后按Enter。

$ nohup options

要检查当前活动的作业列表,请使用-l终端上的命令。

$ jobs -l

现在,对于SSH连接,为避免连接丢失并在断开连接后保持会话运行,请在作业后使用nohup命令行。您还可以使用cat命令和nohup命令一起在文本文件中获取作业的输出列表。

$ nohup ./hello.sh

$ cat nohup.out

要在后台运行一个进程,可以在nohup命令后边的&符号。比如,如果我想在后台测试ping for wordpress-408970-1286763.cloudwaysapps.com,命令行就像下面这行一样。而当你认为你的工作完成后,要看结果,就用pgrep命令。

$ nohup ping ubuntupit.com &

$ pgrep -a ping

5、使用disown命令继续运行SSH会话

如果你没有系统root权限,也许这个命令可以解决你的问题。disown命令可以使任何任务从你运行的系统日志中不被列出。因此,它可以隐藏一个正在运行的进程,以避免所有的自动注销错误或信号挂起(SIGHUP)。实际上,你可以使用diswon进程管理命令,通过隐藏任务来保持你的SSH会话的运行。

要从任务管理器中删除或隐藏任务,请在终端中使用diswon命令。

$ disown

要检查任务的当前状态,请使用当前的shell命令。

$ current shell

您还可以在单行终端命令中设置任务列表。

$ disown jobs1

$ disown jobs1 jobs2 ... jobsn

要检查任务列表,请使用-l命令。

$ jobs -l

要从窗口中删除所有当前作业,请键入-adisown命令后面的语法。

$ disown -a

要仅从窗口中删除一项或正在运行的作业,请使用-rdiswon命令后面的语法。

$ disown -r

现在,对于SSH,要在连接会话后在后台运行作业,请使用以下-h语法。即使断开连接,此过程也可以使SSH会话保持运行。

$ disown -h jobID

$ disown -h%2

修复timeoutRHEL中的SSH错误

当你在Red Hat Enterprise Linux (RHEL)上连接到SSH时,可能会经常出现超时问题,导致连接丢失。这个问题的发生是由于客户端或主机端的响应时间无效。在你的Red Hat根目录下,你必须找到并编辑sshd_config.txt文件来解决这些超时问题。完成后,你就可以恢复你的SSH连接,即使是在断开连接后也能恢复。

在 sshd_config.txt 文件中,你会发现两个选项,分别是 ClientAliveInterval 和 ClientAliveCountMax,你需要编辑这些日志文件来最大化服务器对客户端的响应时间。ClientAliveInterval和ClientAliveCountMax的值相乘,就可以计算出超时时间间隔。

你需要做的就是根据你的系统和网络响应时间长短来编辑这两个值的时长。假设你想把客户端的时间间隔结束时间10分钟和客户端计数5次,那么你在sshd_config.txt文件里面的文本注册表就会像下面这样。然后,重启SSH。

ClientAliveInterval 10m

ClientAliveCountMax 5

总结

对于数据中心服务器系统管理员来说,保持SSH会话和进程的运行对于满足客户端和完成任务至关重要。断开连接并频繁丢失会话非常烦人和麻烦。因此,在本文中,我们试图讨论和说明SSH会话断开连接的原因,并介绍了断开连接后如何保持SSH会话运行的所有可能方法。