How do I exit an SSH connection?
- closing the shell session, e.g. with the shell builtin command,
exit, followed by Enter, or Ctrl-d, usually allows you to exit the
ssh session normally,
- in the case where you have a bad connection and the shell is unresponsive, hit the Enter key, then type
~. and ssh should immediately close and return you to your command prompt.
The first option should be intuitive, but how do we know the latter option?
We could learn this information from a careful reading of the man page.
$ man ssh
gives us the SSH documentation, which has the following section on 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:
~^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‐
~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
~V Decrease the verbosity (LogLevel) when errors are being written
~v Increase the verbosity (LogLevel) when errors are being written
There is nothing special about
exit to ssh, it's just a way to exit the shell, which results in closing the ssh session:
$ 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.
Citing and quoting reference sources is to provide further evidence for what would otherwise be a perhaps demonstrable assertion of fact, as well as inform the user where more relevant information may be stored.
You want to know that you're doing semantically the correct thing, as well as knowing that it works.
You don't want to learn to invoke as a feature something that is documented as a bug and then later "fixed." Doing the semantically correct thing will continue to be supported.