SCP 在 EC2 (AWS) 中不起作用



我可以通过SSH连接到EC2实例:

ssh -i "my_key.pem" ec2-user@my-public-ip

但是,scp 不起作用:

scp -r –i "my_key.pem" ./my_file ec2-user@my-public-ip:/home/ec2-user/my_file

权限被拒绝(公钥)。
失去连接

我也尝试使用公共实例 DNS,但没有任何变化。

知道为什么会发生这种情况以及如何解决吗?

发生这种情况

的唯一方法是在当前目录中找不到私钥mykey.pem。您可能尝试从 scp 以外的目录ssh

使用密钥的完整路径尝试以下操作:

scp -r –i /path/to/my_key.pem ./my_file ec2-user@my-public-ip:/home/ec2-user/my_file

如果失败,请使用-v选项发布输出。它会告诉您问题的确切位置

scp -v -r –i /path/to/my_key.pem ./my_file ec2-user@my-public-ip:/home/ec2-user/my_file

我有点晚了,但这可能对某人有帮助.
不要使用/home/ec2-user。而是直接使用文件名或文件夹名称例如,以下命令会将您的my_file放在主文件夹(即/home/ec2-user)

scp -r –i "my_key.pem" ./my_file ec2-user@my-public-ip:my_file

或者假设你在/home/ect-user/my_data
有一个文件夹然后使用以下命令将文件复制到文件夹

scp -r –i "my_key.pem" ./my_file ec2-user@my-public-ip:my_data

愚蠢的后期附录

为避免每次都指定私钥,只需将以下内容添加到.ssh/config文件中(如果尚未创建它)(不带注释):

Host testserver                  // a memorable alias
Hostname 12.34.56.67             // your server ip
User ec2-user                    // user to connect
IdentityFile /path/to/key.pem    // path to the private key
PasswordAuthentication no

然后,一个简单的ssh testserver应该可以在任何地方工作(因此您的scp也是如此)。

我使用它通过 scp 通过以下方式与 Vim 连接:

vim scp://testserver/relative/file/path

vim scp://testserver//absolute/file/path

vim scp://testserver/relative/dir/path/(注意尾部斜杠)

分别直接从本地编辑文件和浏览文件夹(因此使用我宝贵的 .vimrc <3> 配置)。

在这里找到的解决方案

希望这有帮助! :)

我今天遇到了这个问题,并为我找到了解决方案(不优雅,但有效)。 - 如果您想下载一次内容并在之后回滚所有设置,此解决方案很好。

解决方案:当我在使用 scp 时指定 -v 选项时,我注意到证书由于某种原因被拒绝,所以我去/etc/ssh/sshd_config并将密码身份验证设置为。然后我用了systemctl restart sshd.

完成此过程后,我转到本地计算机并使用:

scp -v -r myname@VPC:/home/{user}/filename.txt path/on/local/machine 

前提是 PWD 和文件传输已成功。

希望这对某人有帮助:)

最新更新