我正在尝试在本地服务器上使用 SCP 将文件从一台远程服务器复制到另一台远程服务器(两个远程服务器都使用自定义端口 (xxxx)
我在尝试:
scp -r -P xxxx [email protected]:/home/myimages/images.tar.gz [email protected]:/home/myimages/images.tar.gz
但我收到以下错误:
ssh: connect to host xxx.xxx.xxx.222 port 22: Connection timed out
有什么建议么?
答案1
您是否检查过从第一个远程主机到第二个远程主机的直接身份验证是否有效?
scp user@host:/file user@otherhost:/otherfile
是简写
ssh user@host scp /file user@otherhost:/otherfile
这让我想到:
ssh -p XXX user@host scp -P XXX /file user@otherhost:/otherfile
可能会有用。
答案2
似乎scp
没有意识到第二台服务器上也应该使用特殊端口。您可以尝试显式调用ssh
以启动远程scp
传输:
ssh -P xxxx user@host scp -P xxxx /file user@otherhost:/otherfile
答案3
定义您的服务器.ssh/config file
,例如:
Host foobar
User youruser
Port 2222
Hostname the.real.hostname
Host foobar2
User youruser
Port 2222
Hostname the2.real.hostname
然后您可以简单地执行以下操作:
scp foobar:file foobar2:
它将使用定义的自定义端口。
答案4
我有远程服务器,它们无法互相看到对方,但我的本地服务器可以看到两者。远程服务器中的 ssh 守护程序正在监听不同的非标准 ssh 端口。以下是我完成此操作的方法:
ssh -p 111 userA@remote1 'cat myfile' | ssh -p 222 userB@remote2 'cat - > myfile'
第二个 ssh 命令首先要求输入密码,然后 remote1 要求输入 userA 的密码。如果您设置了 ssh 授权密钥,则可能会自动执行此操作,但在我的环境中并非如此。