So, I am often SSH'd into a remote server from my Kubuntu desktop. I also rarely switch off my desktop and prefer to just hit sleep instead. One of the things that can be annoying when I resume the desktop is that the previous SSH session is now unresponsive/frozen as SSH believes that it is still connected to the remote server while the server has given up on the old session long ago. No amount of CTRL + C or CTRL + Z banging is going to terminate the session which can take an inordinately long wait to time out.
This is of course not a unique problem and SSH offers a series of escape sequences for situations like this. The following is the relevant section from the SSH man page:
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 charac‐
ter 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 con‐
figuration 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 ses‐
sions to terminate.
~? Display a list of escape characters.
~B Send a BREAK to the remote system (only useful for SSH protocol version 2
and if the peer supports 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 cancella‐
tion 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 for SSH protocol version 2
and 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.
Make note of the fact that the escape sequence only works after a newline. IOW, hit RETURN + ~ + ~ + . to disconnect from the session.
Hope this helps :)
- Log in to post comments