Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I use scp command to copy files between two remote servers from my local PC ?

remote server 1 : IP= & port=6774

remote server 2 : IP= & port=6774

scp -rp -P 6774 denny@ denny@

It gives an error after giving password of ,

ssh: connect to host port 22: Connection refused

lost connection

share|improve this question
I just tested that also, but only works for the first host. The second is locked to port 22. – gajdipajti Jun 21 '12 at 7:43

You can use ~/.ssh/config to specify the ports to use for the hosts (and for setting many other nice things; check the man page man ssh_config):

# ~/.ssh/config

  Port 6774

  Port 6774

When doing this, you have to use the option -3 to scp, which copies the files through your local machine. Otherwise, scp issues the scp command via ssh on the first host, so it actually runs

 ssh -p 6774 denny@ scp -rp /home/denny/testapp1.txt denny@

and then the ~/.ssh/config of the first remote host ( is used instead of your local one.

When you have setup your ~/.ssh/config correctly, this should work:

scp -rp3 denny@ denny@

Of course, you can also copy the contents of the ~/.ssh/config file onto your first remote host, and then you can use scp without the -3 option, which will probably speeden up the transfer.

Or you can use the trick that scp uses and use such a command line:

ssh -p 6774 denny@ scp -rp -P 6774 /home/denny/testapp1.txt denny@

(Note the different case of the port parameter for ssh and scp: ssh -p 6774 vs. scp -P 6774)

PS: I got this information from the OpenSSH bugzilla where I entered this as a bug:

share|improve this answer

I found no easy solution but you could try to use sshfs the following way:

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

Another way could be to use ssh (actually not successfull tested):

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

Currently I don't found the right way to enter the two passwords. It asks some times for the two passwords but doesn't accept anyone. Maybe if you exchange the ssh keys between the hosts it works. Because you than don't need the passwords.

I hope this helps? Thomas

share|improve this answer
Thanks Thomas ... – linuxspider Jun 21 '12 at 7:39

According to this page on the Linux Academy blog, you simply need to use the -P 6774 option right before the second remote path as well:

scp -rp -P 6774 denny@ -P 6774 denny@

Each use of the -P flag applies only to the next location on the command line, not the entire command. Any location that doesn't have a -P between it and the previous path (or the command name [scp]) defaults to the standard port (22).

share|improve this answer
It doesn't work for me. It's a pity, because this seems the best solution. The link is broken. – david.perez Jan 26 at 12:50
Just updated the link (though I forgot to log in first...). Linux Academy decided to restructure their site. Hope that helps, some! – Dan Hunsaker Jan 27 at 22:20

If you need to transfer data from one server to another, use the SCP command. To do so

Just press Ctrl+Alt+T on your keyboard to open Terminal. When it opens, run the command below.

scp -pr root@ /destination/path

Note: The parameter -P can be used if you want to mention the port number.

share|improve this answer
you haven't read the question. He has a problem with the ports. you can set the first port, but nut the second with the -P parameter – gajdipajti Jun 21 '12 at 7:25
@gajdipajti I didn't specify a port in my answer, and added it as a note. The user also stated that he is using the same port. Look at the Q. 2nd & 3rd lines :) – Mitch Jun 21 '12 at 7:32
But it doesn't work that way, you will set the first with -P but the second will remain 22. Just give it a try. I am doing the tests at the moment, but still no working solutions. – gajdipajti Jun 21 '12 at 7:41
You would only use the -P option if you're using a non standard port. – Mitch Jun 21 '12 at 7:45

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.