具有两个不同端口的SCP


15

如何使用scp命令从本地PC在两个远程服务器之间复制文件?

远程服务器1:IP = 67.12.21.133&端口= 6774

远程服务器2:IP = 67.129.242.40&端口= 6774

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

输入密码67.12.21.133后,出现错误,

ssh:连接到主机67.129.242.40端口22:连接被拒绝

失去了连接


我也进行了测试,但仅适用于第一台主机。所述第二被锁定到端口22
gajdipajti

Answers:


19

您可以~/.ssh/config用来指定用于主机的端口(以及用于设置许多其他功能的内容;请参见手册页man ssh_config):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

这样做时,您必须使用-3scp 选项,该选项会通过本地计算机复制文件。否则,scp在第一个主机上通过ssh发出scp命令,因此它实际上会运行

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

然后使用第一个远程主机(67.12.21.133)的〜/ .ssh / config代替您的本地主机。

~/.ssh/config正确设置后,这应该可以工作:

scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

当然,您也可以将〜/ .ssh / config文件的内容复制到第一个远程主机上,然后可以使用不带该-3选项的scp ,这可能会加快传输速度。

或者,您可以使用scp使用的技巧并使用这样的命令行:

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

(请注意ssh和scp端口参数的不同情况:ssh -p 6774vs。scp -P 6774

PS:我从OpenSSH bugzilla获得了此信息,在这里我将其作为bug输入:https ://bugzilla.mindrot.org/show_bug.cgi?id =2020


'-3'似乎不是有效的选项-我只得到“ scp:非法选项-3”。
Rich Sedman'1

8

我发现没有简单的解决方案,但是您可以尝试通过以下方式使用sshfs:

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

另一种方法是使用ssh(实际上未成功测试):

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

目前,我找不到输入两个密码的正确方法。它有时要求输入两个密码,但不接受任何人。也许如果您在主机之间交换ssh密钥,它将起作用。因为您不需要密码。

我希望这有帮助?汤玛士


6

根据Linux Academy博客上的此页面,您仅需要-P 6774在第二条远程路径之前使用该选项:

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

每次使用该-P标志仅适用于命令行中的下一个位置,而不适用于整个命令。-P在它和上一个路径(或命令名[ scp])之间没有任何位置的任何位置默认为标准端口(22)。


它对我不起作用。很遗憾,因为这似乎是最好的解决方案。链接断开。
david.perez '16

1
刚刚更新了链接(尽管我忘了先登录...)。Linux Academy决定重组其站点。希望能有所帮助!
Dan Hunsaker

如果只有这个工作。但是我明白了-P: No such file or directory
汤姆

@Tom-您在什么系统上运行它?您的实现可能scp与此处引用的实现不同。
Dan Hunsaker

这是Ubuntu 17.04。
汤姆

-2

如果需要将数据从一台服务器传输到另一台服务器,请使用SCP命令。这样做

只需按键盘上的Ctrl+ Alt+ T打开终端。打开时,运行以下命令。

scp -pr root@192.168.1.2:/path/to/files /destination/path

注意:如果要提及端口号,则可以使用参数-P。


2
您还没有阅读问题。他的港口有问题。您可以设置第一个端口,但使用-P参数设置第二个端口
gajdipajti 2012年

@gajdipajti我没有在答案中指定端口,而是将其添加为注释。用户还说他正在使用相同的端口。看第二和第三行:)
米奇

2
但这不是那样的,您将第一个设置为-P,而第二个设置为22。请尝试一下。我目前正在测试,但仍然没有有效的解决方案。
gajdipajti 2012年

仅当使用非标准端口时,才使用-P选项。
米奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.