Here is a quick SSH tip that I only discovered a month or two ago despite years of using SSH on a daily basis. When SSH freezes, as can sometimes happen if the network connection drops, it is possible to kill the connection more elegantly than just by closing the terminal tab (my previous way of dealing with it).
You can just press ctrl-enter and then type ~.
The ~ is SSH's escape character, and can be changed on the command line using the -e parameter to SSH or EscapeChar in your config flie if you are so minded.
There are some other useful escapes available, as described in the SSH man page.
- ~. 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 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
If you find yourself working on a lot of unreliable networks then you may wish to investigate Mosh as an alternative to SSH. It can deal with sketchy networks in a much nicer way. Here is how it is described on its website
[Mosh is a] Remote terminal application that allows roaming, supports intermittent connectivity, and provides intelligent local echo and line editing of user keystrokes.
Mosh is a replacement for SSH. It’s more robust and responsive, especially over Wi-Fi, cellular, and long-distance links.