Kzq*_*qai 248 ssh terminal timeout gnome-terminal
当我通过 ssh 连接到某些服务器时,它会超时并“冻结”终端(不接受输入,不会断开连接,不能 Ctrl-C 终止 ssh 进程或任何其他东西)。
这是在 Ubuntu 中,gnome-terminal虽然它似乎暂停了终端输入/输出,但不影响 GNOME 终端软件本身的操作。gnome-terminal与其说是令人讨厌的 ssh 不一致,不如说是一个错误。
那么,有没有办法阻止/从已超时的 ssh 连接中恢复终端?
Lud*_*erl 266
如果 sshd(服务器)在一段时间内没有收到来自客户端的任何消息,它就会关闭连接。您可以告诉您的客户端偶尔向服务器发送生命迹象信号。
这个配置在文件中~/.ssh/config。要每四分钟向远程主机发送信号,请将以下内容放入您的~/.ssh/config.
Host remotehost
HostName remotehost.com
ServerAliveInterval 240
Run Code Online (Sandbox Code Playgroud)
这就是我在我的~/.ssh/config.
要为所有主机启用它,请使用:
Host *
ServerAliveInterval 240
Run Code Online (Sandbox Code Playgroud)
还要确保运行chmod 600 ~/.ssh/config,因为配置文件不能是世界可读的。
Pet*_*aut 264
依次按Enter、~、.可断开冻结的会话。
ssh 手册页中的“转义字符”部分解释了底层细节。
小智 39
尽管这不是您问题的直接答案,但它与您遇到的问题高度相关。而不是试图保持连接(所有连接最终死亡),可以使用终端复用器,像screen和tmux该会话保持活动状态,即使你的终端断开连接的背景。
本质上,当您登录到 SSH 服务器时,您会立即运行screen它将创建并附加一个新会话:
$ screen
Run Code Online (Sandbox Code Playgroud)
然后,您继续像往常一样使用 shell 进行工作。现在,如果连接断开,当您可以重新联机并通过 SSH 重新连接到服务器时,您将获得当前会话的列表:
$ screen -ls
Run Code Online (Sandbox Code Playgroud)
要重新连接到会话:
$ screen -r <session>
Run Code Online (Sandbox Code Playgroud)
<session>PID 或会话名称在哪里。您将重新连接到您的会话,您可以从上次中断的地方继续!
您甚至可以断开会话并从家中重新连接,以从上次中断的确切位置继续。要分离您使用的会话,C-a后跟C-d(thats Control + Aand then Control + D)。
还有简单的在线教程。
在远程服务器上使用screen和tmux被认为是最佳实践,强烈建议使用。有些人甚至使用screen他们的默认登录 shell,所以当他们连接时,他们会立即开始一个新的screen会话。
小智 6
您还可以从 SSH 服务器端设置空闲超时间隔:
文件: /etc/ssh/ssh_config
内容:
ClientAliveInterval XX
ClientAliveCountMax YY
Run Code Online (Sandbox Code Playgroud)
这与客户端设置的工作方式完全相同,但从服务器而不是客户端发送空数据包。
摘自:
http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html
| 归档时间: |
|
| 查看次数: |
177227 次 |
| 最近记录: |