我正在尝试使用 SCP 将文件从使用私钥的远程 VPS 复制到本地机器。
根据我尝试的方法,我得到了不同的错误,并且我不确定正确的方法应该是什么。
以下是我尝试过的:
scp -i ~/.ssh/private-key [email protected]:/var/www/html/index.html /var/www/html/
这将要求输入私钥密码,然后给出错误 /var/www/html 是一个目录。
scp -i ~/.ssh/private-key [email protected]:/var/www/html/index.html root@localhost:/var/www/html/
这将要求输入私钥密码,然后说主机密钥验证失败。失去连接。
scp -i ~/.ssh/private-key [email protected]:/var/www/html/index.html [email protected]:/var/www/html/
这只会让屏幕空白,而且似乎永远空白。我猜想这可能是真正有效的方法,但复制速度可能非常慢?
我尝试使用 ssh 连接到服务器,使用相同的密钥文件,工作正常,所以我不确定问题是什么。
有人有解决方案吗,或者知道我做错了什么?谢谢
答案1
对于第一个错误 - 尝试给出文件的名称 - 正如错误消息所说,不要将目标设置为 /var/www/html,而要将目标设置为 /var/www/html/index.html。
第二个错误听起来像是您尝试复制的服务器自上次访问以来更改了其公钥。如果是这种情况(并且您确定这不是安全漏洞),请使用ssh-keygen -R host
删除缓存的密钥;下次连接尝试时,系统会要求您接受新密钥。但是,我认为修改第一种方法应该可行。
答案2
基本上,你在所有方面都缺乏语法。你应该先检查语法。如果我想将文件从 VPS 复制到本地服务器,我会在本地机器上执行以下操作。
cd /var/www/html/
scp -i ~/.ssh/private-key -r [email protected]:/var/www/html/* .
这会将整个文件夹复制到我的本地/var/www/html/
或者,如果我要将数据从 VPS 传输到本地计算机,则需要为本地计算机或服务器分配一个公共 IP。从远程 VPS 我将执行如下操作。
cd /var/www/html/
scp -i <key_path> -r * root@<my_local_machine_public_ip:~/var/www/html/
或者像下面这样从远程 VPS 复制到本地机器上的 /tmp 文件夹。
cd /var/www/html/
scp -i <key_path> -r * root@<my_local_machine_public_ip:~/tmp/
答案3
在 scp 命令中添加以下选项
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null