使用scp将文件传输到amazon ec2实例总是让我被拒绝(publickey,gssapi-with-mic)

问题描述 投票:23回答:4

我正在尝试将文件传输到ec2实例。我按照亚马逊的文档,这是我的命令:

scp -i [the key's location] Documents/[the file's location] ec2-user@[public dns]:[home/[destination]]

我用适当的东西替换了所有变量,我确定它是正确的密钥并且它有权限400.当我调用命令时,它告诉我RSA密钥指纹,询问我是否要继续连接。我键入是,它回复

Permission denied (publickey,gssapi-with-mic)
lost connection

我已经查看了许多关于堆栈溢出的其他类似问题,但找不到正确的方法。

此外,端口22上启用了ssh流量。

amazon-ec2 scp private-key permission-denied
4个回答
19
投票

亚马逊提供的示例是正确的。这听起来像文件夹权限问题。如果您创建了要复制到的文件夹,而另一个用户或其他用户创建了该文件夹,则您可能无权复制或编辑它。

如果你有sudo能力,你可以尝试自己打开访问权限。虽然不建议这样做,但您可以尝试以下命令:

sudo chmod 777 /folderlocation

这为任何人提供了完整的读/写/可执行权限(因此你不应该将它留在777),但它会让你有机会测试你的scp命令以排除权限。

之后如果你不熟悉权限,我建议你仔细阅读。这是一个例子:http://www.tuxfiles.org/linuxhelp/filepermissions.html通常建议你尽可能地锁定文件夹,具体取决于其中的信息类型。

如果这不是您可能想要检查的其他一些原因:

  • 你在执行'scp -i keyname'命令时是否在你的密钥目录中?
  • 你有权使用你要转移的文件夹吗?

祝你好运。


7
投票

问题可能是用户名。我将文件复制到我的Amazon实例,并首先尝试使用该命令:

scp -r -i ../.ssh/Amazon_server_key_pair.pem ./empty.test [email protected]:~

并得到错误:权限被拒绝(publickey)。

然后我意识到我的实例是一个Ubuntu环境,然后用户用户是“ubuntu”,那么对我有用的正确命令就是:

scp -r -i ../.ssh/Amazon_server_key_pair.pem ./empty.test [email protected]:~

文件“empty.test”是一个包含文本“testing ...”的文本文件。将虚拟服务器的地址替换为实例的公共DNS的正确地址。我用xx.yy.zz.tt将ip替换为我的实例。


3
投票

我必须使用ubuntu @而不是ec2-user @,因为当我在我的终端上看到ubuntu @时,请尝试更改为您在终端上看到的名称

您还必须为计算机中的pem文件设置权限

chmod 400 /path/my-key-pair.pem

以下代码将文件从您的计算机复制到Ec2实例。

scp -i ~/location_of_your_ec2_key_pair.pem ~/location_of_transfer_file/sample.txt ubuntu@ec2_your_ec2_instance.compute.amazonaws.com:~/folder_to_which_it_needs_to_be_copied

以下代码将文件从Ec2实例复制到您的计算机

scp -i ~/location_of_your_ec2_key_pair.pem   ubuntu@ec2_your_ec2_instance.compute.amazonaws.com:~/location_of_transfer_file/sample.txt ~/folder_to_which_it_needs_to_be_copied

0
投票

可能会使用错误的用户名。发生在我身上,是同样的错误消息 - >权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic)。失去了连接

© www.soinside.com 2019 - 2024. All rights reserved.