I am trying to use SCP on my local server to copy a file from one remote server to another remote server (both remote servers use a custom port (xxxx)

I am trying:

scp -r -P xxxx [email protected]:/home/myimages/images.tar.gz [email protected]:/home/myimages/images.tar.gz

But I get the following error:

ssh: connect to host xxx.xxx.xxx.222 port 22: Connection timed out

Any suggestions?

  • I presume that you can ssh to xxx.xxx.xxx.222 normally?
    – Benj
    Commented Nov 5, 2009 at 10:10
  • Yeah, I can ssh to all servers from all servers
    – Lizard
    Commented Nov 5, 2009 at 10:14
  • Cross posted here: serverfault.com/questions/81650/… Commented Nov 5, 2009 at 11:55

4 Answers 4


did you check that direct authentication works from first remote host to the second one?

scp user@host:/file user@otherhost:/otherfile is shorthand for

ssh user@host scp /file user@otherhost:/otherfile

which leeds me to think:

ssh -p XXX user@host scp -P XXX /file user@otherhost:/otherfile might work.

  • 1
    Yeah, i have ssh'd to both all servers from each server :(
    – Lizard
    Commented Nov 5, 2009 at 10:10
  • Good point, just because you can see xxx.222 doesn't mean that xxx.111 can.
    – Benj
    Commented Nov 5, 2009 at 10:11
  • It is a good point, but I have already checked that, any other suggestions?
    – Lizard
    Commented Nov 5, 2009 at 10:13
  • The ssh then the scp does what i need it to.
    – Lizard
    Commented Nov 5, 2009 at 10:18

It seems like scp doesn't realize that the special port should also be used on the second server. You could try to explicitly call ssh to start the remote scp transfer:

ssh -P xxxx user@host scp -P xxxx /file user@otherhost:/otherfile

Define the servers in your .ssh/config file, for example:

Host foobar
User youruser
Port 2222
Hostname the.real.hostname

Host foobar2
User youruser
Port 2222
Hostname the2.real.hostname

You can then simply do:

scp foobar:file foobar2:

and it will use the defined custom ports.


I've got remote servers that cannot see each other, but my local server can see both. The ssh daemon in the remote servers are listening in different non-standard ssh ports. This is how I get this done:

ssh -p 111 userA@remote1 'cat myfile' | ssh -p 222 userB@remote2 'cat - > myfile'

The second ssh command asks for the password first, then remote1 asks for password for userA. You may have this automated if you have set up ssh authorized keys, which is not the case in my environment.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .