Skip to main content
October, 2012

Running scp through ssh tunnel

Ki H. Kim
Ki H. Kim
Director, Engineering

Run scp to machine R, which is only accessible through gateway machine G.

Step 1: Establish SSH tunnel. Pick a temporary port between 1024 and 32768 (1234 in this example). Port 22 will be used by scp.

$ ssh -L 1234:<address of R known to G>:22 <user at G>@<address of G> 
# Adding "cat -" will keep it running while above will get you connected to G
$ ssh -L 1234:<address of R known to G>:22 <user at G>@<address of G> cat -

Either way you run it, open another terminal for next step.

Step 2: Run scp against port 1234 pretending 127.0.0.1 (localhost) is the remote machine R, and the command will be sent to R.

$ scp -P 1234 <user at R>@127.0.0.1:/path/to/file file-name-to-be-copied

References:
http://whoochee.blogspot.com/2012/07/scp-via-ssh-tunnel.html
http://www.mpcdf.mpg.de/services/network/secure-shell/ssh-tunnelling-port-forwarding

Center for Health Journalism