如何退出 SSH 连接?

如何退出 SSH 连接?

我正在通过 SSH 连接到服务器,使用以下命令向套接字服务器发送消息:

ssh 181.169.1.2 -p 5566

建立连接并编写消息并发送后,我无法退出文本模式。我只能输入更多文本,仅此而已。

是否有命令或组合键可以让我返回到命令模式?

答案1

如何退出 SSH 连接?

两种方式:

  • 关闭shell会话通常会退出,例如:
    • 使用 shell 内置命令,exit,后跟Enter,或
    • Ctrl- d,(文件结尾
  • 如果您的连接状态不佳并且 shell 没有响应,请按下Enter键,然后输入~.ssh 应该会立即关闭并返回到命令提示符。

第一个选项应该是直观的,但我们如何知道后一个选项?

我们可以通过仔细阅读手册页来了解这些信息。

$ man ssh

给我们SSH 文档其中有以下有关转义字符的部分:


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.

ssh没有什么特别之处exit,它只是一种退出 shell 的方法,从而关闭 ssh 会话:

$ type exit
exit is a shell builtin
$ help exit
exit: exit [n]
    Exit the shell.
    
    Exits the shell with a status of N.  If N is omitted, the exit status
    is that of the last command executed.

引用和引述参考资料是为了为原本可能可以证明的事实断言提供进一步的证据,并告知用户可以在何处存储更多相关信息。

您想知道自己所做的事情在语义上是否正确,并且知道它是否有效。

您不想学习将记录为错误然后后来“修复”的功能作为功能调用。 做语义上正确的事情将继续得到支持。

答案2

简短回答:类型exit

但是,如果这不起作用……

SSH 转义符和断开连接序列

大多数 SSH 实现都为交互式会话实现了转义字符,类似于 telnet 的Ctrl-]组合。默认的 SSH 转义字符是~,在行首输入。

如果你想终止交互式 OpenSSH 会话已卡住,无法通过进入exitCtrlD进入远程端的 shell退出,您可以输入 ,~然后输入一个点.。为确保在输入行开头输入转义字符,您应该先按 Enter。因此,在大多数情况下,以下序列将终止 SSH 会话:

Enter~.

其他转义序列

例如,OpenSSH 除了 之外还提供了其他转义序列~.~?在会话期间输入应该会给出一个列表。一些示例:

  • ~随后Ctrl-Z暂停会议,
  • ~&直接将其置于背景中,
  • ~#给出此会话中转发的连接列表。
  • 如果您只想在行首输入波浪号,则必须将其加倍:~~

可以使用命令行选项更改转义字符-e。如果设置了特殊值-e none,则转义将被禁用,并且会话完全透明。

也可以看看OpenBSD 中有关 ssh 的手册页(引用自www.openssh.org)在-e命令行选项下

答案3

您是否要退出 SSH shell?

您可以输入exit并点击Enter,或使用Ctrl+D

答案4

这些是受支持的字符,它们提供了您可以在使用 ssh 时使用的各种选项。

支持的转义序列:

 ~.  - 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

(请注意,只有在换行符之后才能立即识别转义符。)您可以通过点击 来关闭转义序列列表Enter

相关内容