.pem文件对SSH和SCP的正确文件权限是什么


69

我尝试通过SSH进入我的AWS Ubuntu服务器并将目录复制到本地计算机。在整个过程中,我遇到不同的文件许可权错误(如下所示)。

.pem文件是否需要一个特定的文件许可权,该许可权允许我进行SSH和SCP?
还是我需要两次更改文件许可权?登录后一次更改为SSH,一次更改为SCP?

这是我正在使用的命令:

SSH:

ssh -i sentiment.pem Todo@54.555.555.555

使用以下方法从远程复制到本地计算机:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

我使用的是Mac OS X 10.7.5。


反复试验:

1.)最初下载.pem文件后,其权限被设置为I THINK:0644

-rw-r--r-@ 1 Toga员工1692 2月18日21:27 sentiment.pem

然后,我尝试通过终端进行SSH并收到以下信息:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

2.)我将文件权限更新为:chmod 660 sentiment.pem

更新后,权限设置为:

-rw-rw ---- @@ 1名Toga员工1692年2月18日21:27 sentiment.pem

然后,我尝试通过终端进行SSH并收到以下信息:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

3.)我将文件权限更新为:chmod 600 sentiment.pem

更新后,权限设置为:

-rw ------- @@ 1名Toga员工1692年2月18日21:27 sentiment.pem

然后,我尝试通过终端进行SSH并成功!!

4.)现在登录,我使用以下命令运行a命令将远程目录复制到本地计算机:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

哪个返回:

Permission denied (publickey).

尝试的SCP命令:

1.)添加命令-i并引用了.pem文件:

scp -i sentiment.pem Todo@54.555.555.555:/ home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

2.)添加了命令-i,引用了.pem文件,并将AWS的用户更改为ec2-user:

scp -i sentiment.pem ec2-user@54.555.555.555:/ home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

3.)添加了命令-i,引用了.pem filem,将AWS的用户更改为ec2-user,并添加了.pem文件位置的完整文件路径:

scp -i /用户/ Toga /桌面/汇总/个人/ Serial_Project_Starter /情感/sentiment.pem ec2-user@54.555.555.555:/ home / ubuntu / sentiment /用户/ Toga /桌面/ sentimentlocal


您必须告诉scp也使用.pem文件
daniel kullmann 2014年

感谢您指出@danielkullmann这是有道理的。我尝试了直接引用.pem文件的命令组合,但是还没有任何效果。我用标题为“尝试的SCP命令”的部分更新了问题,以对我尝试过的内容进行分类。如果您有其他命令,请告诉我。谢谢。
乔治·杰斯特

Answers:


110

请访问此处如何使用SSH远程连接到Amazon EC2 或参考以下内容。

如何使用SSH远程连接到Amazon EC2:

  1. 下载.pem文件。
  2. 在Amazon Dashboard中,从左侧栏中选择“实例”,然后选择您要连接的实例。
  3. 点击“操作”,然后选择“连接”
  4. 单击“与独立SSH客户端连接”
  5. 打开终端窗口
  6. 创建目录:

    # mkdir -p ~/.ssh
    
  7. 将下载的.pem文件移动到我们刚刚创建的.ssh目录中:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. 更改.pem文件的权限,以便只有root用户才能读取它:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. 创建一个配置文件:

    # vim ~/.ssh/config
    

    在该配置文件中输入以下文本:

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    保存该文件。

  10. 使用带有公共DNS主机名的ssh命令连接到您的实例。
    例如:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    

1
我很好奇:为什么要投票?
erik 2014年

1
我没有对此投反对票。这实际上看起来很有帮助,不确定当我需要从远程scp到本地comp时是否能解决问题。我将尝试一下,看看会发生什么。谢谢巴宾
乔治·乔斯特

复制整个目录及其内容时,请使用scp -r
bahamat 2014年

1
极好的答案。为了避免移动pem,可以使用ssh -i标志指定要使用的公钥。例如:ssh -i path / to / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

14

chmod 400 {keyfile}.pem 是亚马逊指示的,并且有效。


这是我一直在寻找的答案,被接受的答案中的所有说明都是很好的做法……但与问题无关。
sarink

3

似乎您不应该使用IP地址,而是使用SCP命令中系统的完整主机名。AWS文档在http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html的“使用SCP将文件从Linux / Unix传输到Linux / Unix实例”部分下进行了描述。

并用于-r复制目录。

并请注意,不同图像的默认用户名不同:

对于Amazon Linux,默认用户名是ec2-user。对于RHEL5,用户名通常是,root但可能是ec2-user。对于Ubuntu,用户名为ubuntu。对于SUSE Linux,用户名是root。否则,请咨询您的AMI供应商。

因此,使用以下命令:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

1
一个不错的提示提醒我使用正确的用户名。出现上述错误,我需要记住在ubuntu实例上使用ubuntu用户。
md_rasler

2

“权限被拒绝(公共密钥)”来自远程服务器,因此您使用的密钥错误,不允许连接或远程authorized_keys文件中有错字。


2
chmod 0400 pemfile.pem

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name

3
请说明您的ssh命令(并在可能的情况下提供参考)。顺便说一句,chmod 400九个月前在一个答案中提供了。
斯科特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.