Howto notes about opening and using ssh and ssh tunnels.
Setting up a server
Describes the setup of a shortcut deiz
to some server. Useful to avoid typing the whole ssh command each time.
Assume that you use the following command to connect to deiz:
neze@neze ~$ ssh -p12345 -oIdentityFile=~/.ssh/deiz_ecdsa me@deiz.domain.fr
Modify your .ssh/config
file.
Host deiz
HostName deiz.domain.fr
Port 12345
User me
IdentityFile ~/.ssh/deiz_ecdsa
Then you’ll be able to connect to deiz
with the command:
neze@neze ~$ ssh deiz
Connecting somewhere through a ssh tunnel
Describes a connection from neze
to peugeot
assuming you have ssh access to deiz
. Useful if peugeot
is accessible from deiz
but not from neze
.
Note that you could do this without any new setup with the following ssh command
neze@neze ~$ ssh -J deiz clement.durand@peugeot.polytechnique.fr
Modify your .ssh/config
file.
Host peugeot
HostName peugeot.polytechnique.fr
Port 22
User clement.durand
ProxyCommand ssh -W %h:%p deiz
You can eventually replace the ProxyCommand
instruction with
ProxyJump deiz
which actually allows you to setup multiple jumps separated by commas.
neze@neze ~$ ssh peugeot
Port forwarding
Reverse tunneling
Describes a connection from neze
to peugeot
assuming you have ssh access to vps
. Useful when peugeot
and neze
can access vps
but vps
cannot access them.
On the machine you want to access, start a reverse tunnel.
clement.durand@peugeot ~$ ssh -NR 12345:localhost:22 vps
On your computer, setup the connection to go through vps.
Host peugeot
HostName localhost
Port 12345
User clement.durand
ProxyCommand ssh -W %h:%p vps
neze@neze ~$ ssh peugeot
Tunneling
Describes a connection from local
to peugeot
through deiz
assuming you have ssh access to deiz
, peugeot
is only accessible from deiz
, and the user willing to connect to peugeot
doesn’t have ssh access to deiz
.
On the proxy, setup a forwarding.
neze@deiz ~$ ssh -NL 0.0.0.0:12345:peugeot.polytechnique.fr:22 neze@localhost
On the user’s computer, setup the connection to go through deiz.
Host peugeot
HostName deiz
Port 12345
User user
user@local ~$ ssh peugeot
Creating a socks proxy
Describe access to a website from neze
, assuming the website is only accessible from deiz
and you have ssh access to deiz
.
On your machine, set up a socks proxy through the distant machine.
neze@neze ~$ ssh -ND 127.0.0.1:8080 deiz
Then, configure your browser to use a socks 5 proxy on 127.0.0.1:8080, with remote DNS. You will be able to access any website accessible from the distant machine.
Notes about the -N option
The previous sections about port forwarding use the -N
option of ssh. This is useful if you do not want a remote terminal but only to setup a tunnel with port forwarding.
If you also want access to a remote terminal, no need to connect twice to the same server, you can remove the -N
option:
neze@neze ~$ ssh -D 127.0.0.1:8080 deiz
If you do not want a remote terminal, you can also put this process in background with one of the following methods.
neze@neze ~$ screen -S deiztunnel ssh -ND 127.0.0.1:8080 deiz
neze@neze ~$ exit
# then later when you want to stop the tunnel
neze@neze ~$ screen -r deiztunnel
^C
[screen is terminating]
neze@neze ~$ exit
neze@neze ~$ ssh -ND 127.0.0.1:8080 deiz &
[1] 20043
neze@neze ~$ disown
neze@neze ~$ exit
# then later when you want to stop the tunnel
neze@neze ~$ kill 20043