SSH tunneling
This is a simple guideline for using ssh tunneling.
ssh
connection uses port 22 to communicate by default.
Suppose we have this situation:
haha.myhome cannot directly connect to fox.fsu.edu, but unable to connect to gateway.fsu.edu.
For the interactive shell, that would be not a problem,
- from haha.myhome, login to gateway.fsu.edu
- from gateway.fsu.edu, login to fox.fsu.edu
However, it is very clumsy to copy files from fox.fsu.edu to haha.myhome, there is no direct connection.
In this case, ssh tunning makes life easier.
To use gateway.fsu.edu as a bridge, bridge to fox.fsu.edu, port 22 to haha.myhome, port 9896, by using the following command
haha.myhome$ssh -N gatewayUser@gateway.fsu.edu -L 9896:fox.fsu.edu:22
After the bridge is established, port 9896 at haha.myhome is connected to port 22 at fox.fsu.edu. So, we can either ssh, scp, or rsync by
haha.myhome$ssh -p 9896 foxUser@localhost haha.myhome$scp -P 9896 foxUser@localhost:<files> <haha.myhome_destination> haha.myhome$rsync -arvzp -e 'ssh -p 9896' foxUser@localhost:<files> <haha.myhome_destination>
Jump from gateway.fsu.edu
If only for interactive shell, using gateway.fsu.edu as a jump server is easiser.
haha.myhome$ssh -J gatewayUser@gateway.fsu.edu -XY foxUser@fox.fsu.edu