具有两个不同端口的 SCP

具有两个不同端口的 SCP

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

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

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

scp-rp-P 6774[电子邮件保护]:/home/denny/testapp1.txt [电子邮件保护]

输入密码 67.12.21.133 后出现错误,

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

失去了连接

答案1

您可以使用它~/.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 [email protected] scp -rp /home/denny/testapp1.txt [email protected]:

然后使用第一个远程主机(67.12.21.133)的 ~/.ssh/config 而不是本地主机的 ~/.ssh/config。

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

scp -rp3 [email protected]:/home/denny/testapp1.txt [email protected]:

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

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

ssh -p 6774 [email protected] scp -rp -P 6774 /home/denny/testapp1.txt [email protected]:

(请注意 ssh 和 scp 的端口参数的大小写不同:ssh -p 6774vs. scp -P 6774

PS:我从 OpenSSH bugzilla 获得了此信息,我将其作为一个错误输入:https://bugzilla.mindrot.org/show_bug.cgi?id=2020

答案2

我没有找到简单的解决方案,但您可以尝试按以下方式使用 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 密钥,它就会起作用。因为你不需要密码。

希望这能帮到你?托马斯

答案3

根据这一页在 Linux Academy 博客上,您只需要-P 6774在第二个远程路径之前使用该选项:

scp -rp -P 6774 [email protected]:/home/denny/testapp1.txt -P 6774 [email protected]:

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

答案4

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

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

scp -pr [email protected]:/path/to/files /destination/path

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

相关内容