Monday, April 23, 2012

Linux / UNIX: Kill Unresponsive SSH Session

Sometime my ssh session just stops working because of the internet connection problem. I tried pressing CTRL+Z and CTRL+C to terminate session, but failed to work. How do I properly kill a hung SSH session without killing my local terminal or using kill command?

From the ssh man page:
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 supported escapes (assuming the default ‘~’) are:
~. Disconnect.
So all you've to do is press [Enter] key followed by ~.. Please note that escapes are only recognized immediately after newline.

Ssh ESCAPE CHARACTERS List

     ~.      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 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 cancellation of existing remote port-forwardings using -KR[bind_address:]port.
!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).


No comments:

Post a Comment