терминал зависает при обрыве соединения и включенном ssh

когда я подключаюсь к серверу через Интернет на вкладке терминала gnome, если я потерял подключение к Интернету, вкладка терминала будет зависать и не принимать никаких входных данных. Почему это зависает?

Есть ли способ активировать вкладку терминала, то есть заставить ее продолжить выполнение процесса локальной оболочки?

Является ли закрытие вкладки терминала единственным способом?

10 голосов | спросил Tim 17 AMpFri, 17 Apr 2015 00:17:44 +030017Friday 2015, 00:17:44

1 ответ


13

SSH-соединение прерывается автоматически через определенный период времени, установленный ClientAliveInterval и ClientAliveCountMax и их эквиваленты на стороне клиента. Если эти таймауты достаточно велики, вы увидите замороженную раковину. Однако, если вы используете OpenSSH, вам не нужно ждать тайм-аут и вы можете принудительно закрыть соединение, используя escape-символы :

ESCAPE CHARACTERS
When a pseudo-terminal has been requested, ssh supports a number
of functions through the use of an escape character.  A single
tilde character can be sent as ~~ or by following the tilde by a
character other than those described below. The escape character
must always follow a newline to be interpreted as special. The
escape character can be changed in configuration files using the
EscapeChar configuration directive or on the command line by the
-e option.
The supported escapes (assuming the default ‘~’) are:

~.
    Disconnect.
(...)

Когда соединение зависает, нажмите ~ (что означает Shift + ` вместе), отпустите его и нажмите . . Кроме того, если вы работаете с нестабильным соединением или вам необходимо все время подключаться к удаленному серверу, вы можете использовать autossh для автоматического восстановления потерянного соединения, это очень удобно.

ИЗМЕНИТЬ

Однако, если оба ClientAliveInterval и ServerAliveInterval устанавливаются на 0 явно или не устанавливаются явно, а затем устанавливаются на 0 по умолчанию в соответствии с sshd_config и ssh_config manpages, настройки времени ожидания установлены в следующих файлах (из http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/usingkeepalive.html ):

  # cat /proc/sys/net/ipv4/tcp_keepalive_time
  7200

  # cat /proc/sys/net/ipv4/tcp_keepalive_intvl
  75

  # cat /proc/sys/net/ipv4/tcp_keepalive_probes
  9

  The first two parameters are expressed in seconds, and the last is
  the pure number. This means that the keepalive routines wait for
  two hours (7200 secs) before sending the first keepalive probe,
  and then resend it every 75 seconds. If no ACK response is
  received for nine consecutive times, the connection is marked as
  broken.

Вы можете изменить эти 3 файла, просто используя echo и убедитесь, что замороженный сеанс SSH отключен в соответствии с этими значениями.

ответил Arkadiusz Drabczyk 17 AMpFri, 17 Apr 2015 01:38:40 +030038Friday 2015, 01:38:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132