用户报告他们无法通过SSH进入AWS中的EC2实例?

时间:2020-02-11 15:41:18

标签: amazon-ec2 ssh ssh-keys

用户正在执行以下操作:

$ ssh -i /Users/user1/key.pem centos@10.12.10.10

尝试访问时收到的错误消息如下:

$ ssh -i /Users/user1/key.pem centos@10.12.10.10 
centos@10.12.10.10 : Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

1 个答案:

答案 0 :(得分:5)

AWS支持人员提出了针对此特定问题的新颖解决方案,我感到不得不在这里分享它,因为我以前从未见过。过去,大多数同事使用的方法都是围绕实例停止操作,然后将附加到该实例的EBS卷作为辅助卷安装到另一个EC2实例,然后根据需要安装和编辑它。

这些方法介绍了传统方法:

使用用户数据

对我来说,这种新方法是利用#userdata来使一系列命令在EC2实例启动时运行。

  1. 在开始之前,请创建您无法通过SSH插入到EC2的卷(卷ID:vol-XXXX)的快照,以防万一。快照本质上是卷的备份。您可以在this documentation中找到创建快照的步骤。
  2. 停止实例。
  3. 在控制台中,选择您的实例,转到“操作”→“实例设置”→“查看/更改用户数据”
  4. 在“用户数据”中,将信息放在下面:
#cloud-config
bootcmd:
  - [ chmod, 700, /home/centos ]
  - [ chmod, 700, /home/centos/.ssh ]
  - [ chmod, 600, /home/centos/.ssh/* ]
  - [ chmod, 600, /etc/ssh/ssh_host_*_key ]
  - [ chmod, 711, /var/empty/sshd ]
  - [ chmod, 600, /home/centos/.ssh/authorized_keys ]
  - [ sh, -c, "chown -R centos:centos /home/centos" ]
  1. 启动您的实例。

实例重新启动后,尝试通过ssh访问实例。

注释

  • 上面的用户数据脚本将纠正实例本身内部的所有所有权和权限问题。
  • 如果使用上述用户数据脚本后仍然遇到问题,请告诉我,我们会尽快与您联系。
  • 如果先前的程序可行,请重复步骤1-4,并从“用户数据”框中删除内容,以避免该过程在每次实例重新启动时再次重复。