206

Я подключаюсь к серверу через SSH, чтобы отправить сообщение серверу сокетов с помощью команды вроде:

SSH 181.169.1.2 -p 5566

После того, как соединение установлено, и я пишу сообщение и отправляю его, я не могу выйти из текстового режима. Мне только разрешено вводить больше текста и все.

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

7 ответов7

262

Краткий ответ: Тип exit

Если это не сработает, однако ...

Escape-символ SSH и последовательность отключения

В большинстве реализаций SSH для интерактивных сессий используется escape-символ, аналогичный комбинации Ctrl-] . Экранирующий символ SSH по умолчанию - ~ , введенный в начале строки.

Если вы хотите завершить интерактивный сеанс OpenSSH, который застрял и не может быть завершен с помощью ввода exit или Ctrl D в оболочке на удаленной стороне, вы можете ввести ~ а затем точку . , Чтобы быть уверенным, что нужно вводить escape-символ в начале строки ввода, сначала нужно нажать Enter. Таким образом, следующая последовательность завершит сеанс SSH в большинстве случаев:

Введите ~ .

Другие последовательности побега

OpenSSH, например, предлагает другие escape-последовательности, кроме ~. , Ввод ~? во время сеанса должен дать вам список. Некоторые примеры:

  • ~ следование Ctrl-Z приостанавливает сеанс,
  • ~& помещает это прямо в фон,
  • ~# дает список переадресованных соединений в этом сеансе.
  • Если вы хотите просто ввести тильду в начале строки, вы должны удвоить ее: ~~ .

Экранирующий символ можно изменить с помощью параметра командной строки -e . Если вы установите специальное значение -e none , экранирование будет отключено, и сеанс будет полностью прозрачным.

См. Также справочную страницу OpenBSD по ssh (на которую ссылается www.openssh.org) в параметре командной строки -e

98

Как мне выйти из SSH-соединения?

Два пути:

  • закрытие сеанса оболочки, например, с exit после которого следует Enter, или Ctrl - d обычно позволяет вам нормально выйти из сеанса ssh ,
  • если у вас плохое соединение и оболочка не отвечает, нажмите клавишу Enter, затем введите ~. и ssh должен немедленно закрыться и вернуть вас в командную строку.

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

Мы могли бы узнать эту информацию из внимательного прочтения справочной страницы.

$ man ssh

дает нам документацию по SSH, в которой есть следующий раздел о 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.

     ~^Z     Background ssh.

     ~#      List forwarded connections.

     ~&      Background ssh at logout when waiting for forwarded connection
             / X11 sessions to terminate.

     ~?      Display a list of escape characters.

     ~B      Send a BREAK to the remote system (only useful if the peer sup‐
             ports it).

     ~C      Open command line.  Currently this allows the addition of port
             forwardings using the -L, -R and -D options (see above).  It
             also allows the cancellation of existing port-forwardings with
             -KL[bind_address:]port for local, -KR[bind_address:]port for
             remote and -KD[bind_address:]port for dynamic port-forwardings.
             !command allows the user to execute a local command if the
             PermitLocalCommand option is enabled in ssh_config(5).  Basic
             help is available, using the -h option.

     ~R      Request rekeying of the connection (only useful if the peer
             supports it).

     ~V      Decrease the verbosity (LogLevel) when errors are being written
             to stderr.

     ~v      Increase the verbosity (LogLevel) when errors are being written
             to stderr.
33

Вы хотите выйти из оболочки SSH?

Вы можете напечатать exit и нажать Enter или использовать Ctrl+D

11

Просто введите exit или logout (затем нажмите Enter, конечно), оба будут работать.

4

Это поддерживаемые символы, которые предоставляют различные опции, с которыми вы можете поэкспериментировать с ssh.

Поддерживаемые escape-последовательности:

 ~.  - terminate session

 ~B  - send a BREAK to the remote system

 ~R  - Request rekey (SSH protocol 2 only)

 ~#  - list forwarded connections

 ~?  - this message

 ~~  - send the escape character by typing it twice

(Обратите внимание, что экранирование распознается только сразу после новой строки.) Вы можете закрыть список последовательностей Escape, нажав Enter.

4

Вы можете написать logout в строке консоли (и, конечно, нажать Enter ).

2

MacOS: когда ssh зависает, используйте следующую последовательность:

ENTER 
SHIFT+`
.

где: shift+` производит ~ (символ тильды)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .