为什么 scp 无法解析第二个主机名?

为什么 scp 无法解析第二个主机名?

我正在尝试使用本地计算机将数据从一台远程计算机复制到另一台远程计算机。 两个远程计算机均已添加到本地计算机,~/.ssh/config如下所示:

Host source
        Hostname <public-ip>
        IdentityFile /home/me/.ssh/source-key-file
        User source_me
        ServerAliveInterval 60
        Compression yes
        ForwardX11 yes
Host destiny
        Hostname <different-public-ip>
        IdentityFile /home/me/.ssh/destiny-key-file
        User destiny_me
        ServerAliveInterval 60
        Compression yes
        ForwardX11 yes

以下工作没有任何问题:

scp source:~/file .
scp destiny:~/another_file .

scp file source:~
scp file destiny:~

无论如何,尝试使用

scp source:~/file destiny:~

抛出一个错误:

ssh: Could not resolve hostname destiny: Name or service not known
lost connection

为什么它没有按照我预期的那样工作?

答案1

对于远程到远程复制,传统上该scp工具已启动连接直接从源主机– 也就是说,不是您的本地机器可以解析destiny,而是实际上source需要了解该问题的机器。

(像 ssh/scp 中的许多其他怪癖一样,这是为了反映rcp工具

您需要指定-3强制通过本地机器进行复制的选项:

scp -3 source:~/file destiny:

请注意,这在 OpenSSH v8.7 中已经发生了变化,设为-3默认…所以实际上是因为您使用了过时的 OpenSSH 版本。

相关内容