====== Aliases ======
by editing ~/.ssh/config, you can make SSH aliases very simply:
Host shortname
HostName longname.domain.tld
Port 22
User username
typing "ssh shortname" will be the same as "ssh username@longname.domain.tld" (even if shortname is not defined in the DNS nor in the /etc/hosts file)
====== Bounce hosts ======
Here we use a publicaly available IP host to reach a private host, using a single command. For this to work you have to add something like that in ~/.ssh/config:
Host hostname
ProxyCommand ssh username@longname.domain.tld nc distant_private_ip_adress 22
User username
"ssh hostname" connects to the distant_private_ip_adress adress server using the public longname.domain.tld host. Of course [[http://netcat.sourceforge.net/|netcat]] must be installed on the public server.
====== Tunnels ======
We can map distant ports on localhost local ports, using a bounce host:
ssh -L 8080:server_to_forward_ports_of:80 server_to_connect_to
once connected to server_to_connect_to, localhost:8080 would be the same as server_to_forward_ports_of:80.
====== SOCKS proxies ======
ssh -D 8080 server_to_connect_to
once connected to server_to_connect_to, use localhost:8080 as the (SOCKS v4) proxy server in your favorite browser.
====== Using a local proxy to enable internet access on a remote host ======
* install some proxy software (i.e., Squid)
* connect to the server, and map a port to the proxy's one:
ssh -R8181:localhost:3128 server_to_connect_to
* once connected, enter:
export http_proxy=http://127.0.0.1:8181
* surf
====== Run a command on login ======
Commands in /etc/ssh/sshrc are executed by ssh when the user logs in, just before the user's shell (or command) is started. It's commonly used to send alerts using mail:
#!/bin/sh
# source: http://blog.uggy.org/post/2009/06/05/Execution-de-commande-lors-d-une-connexion-SSH
DATE=`date "+%d.%m.%Y--%Hh%Mm"`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`
HOSTNAME=`hostname`
echo "Connexion de $USER sur $HOSTNAME
IP: $IP
ReverseDNS: $REVERSE
Date: $DATE
" | mail -s "Connexion de $USER sur $HOSTNAME" me@mail.com
====== Multiplexing ======
If you make several connections to the same server, you can speed up every connection after the first one by enabling multiplexing.
* create the directory where connections' data will be stored:
$ mkdir -p ~/.ssh/connections
$ chmod 700 ~/.ssh/connections
* Enable multiplexing for every hosts in .ssh/config:
Host *
ControlMaster auto
ControlPath ~/.ssh/connections/%r_%h_%p
Warning: This will not work with tunneled protocols or forwarded ports (See [[http://www.symkat.com/ssh-tips-and-tricks-you-need]]).