我有一个大的服务器上的文件one
,我想将它复制到服务器two
使用scp
。我已经正确设置了密钥,并且可以从台式机ssh / scp到这两个服务器。
我需要复制的文件大于工作站硬盘上的可用空间,因此我想这样做:
scp one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz
但是我得到了:
ssh: Could not resolve hostname one: Name or service not known
我们这里没有DNS(不要问我为什么),所以我在〜/ .ssh / config中有它:
Host one
Hostname <IP address of server one>
User jspurny
Host two
Hostname <IP address of server two>
User jspurny
如果我尝试使用较小的文件并将其从传输one
到我的工作站,然后再传输到two
,则可以正常工作:
scp one:/opt/smallerfile.tar.gz .
scp smallerfile.tar.gz two:/opt/
当按注释中的建议直接使用IP地址时,我得到:
$ scp jspurny@<one's IP>:bigfile.tar.gz jspurny@<two's ip>:bigfile.tar.gz
Host key verification failed.
lost connection
这不是问题:
大小在这里不是问题-它只是解决此问题的“触发器”,因为无法bigfile.tar.gz
在我的工作站上进行存储。无论文件大小如何,都会出现此问题。
题:
为什么命令:
scp oneremote:file secondremote:file
引发错误,无论使用.ssh/config
别名还是直接使用ip地址?
解决-有点-还在寻找解释 -我已将bigfile拆分为较小的文件,并通过我的工作站逐一传输。我仍然想知道为什么它不起作用。因此,我仍然希望对什么地方有问题做一些解释。
找到了失败的原因:似乎我很愚蠢。我以为命令
scp one:file two:file
在每个服务器上创建两个连接,然后从一个服务器接收数据,然后立即将它们发送到两个服务器,因此就像一个中继。
这显然并非如此,因为一个简单-v
的选择表明,它实际上只是连接到一个从一个它会尝试连接到2。这显然是不可能的,因为不应将服务器一连接到两个服务器。