允许用户使用密钥对通过 SSH 连接到 EC2 Linux 实例

Posted

技术标签:

【中文标题】允许用户使用密钥对通过 SSH 连接到 EC2 Linux 实例【英文标题】:Allowing users to SSH into EC2 Linux Instance with key pairs 【发布时间】:2015-03-14 16:52:33 【问题描述】:

我创建了一个新的 EC2 Amazon Linux 实例。我想允许开发人员通过 SSH 连接到 EC2 实例。为了测试这一点,我正在我的 Windows 计算机上进行尝试。我已按照以下链接中的说明进行操作,但无法使用我生成的密钥对进行 SSH (Putty) 连接。

我按照reference 此处的说明进行操作 和here

使用 FireSSH 和 AWS 生成的 pem 以 ec2-user 身份登录 EC2 后,我使用 SSH 运行以下命令来创建新用户、.ssh 目录和权限。

[ec2-user ~]$ sudo adduser newuser

[ec2-user ~]$ sudo su - newuser

[newuser ~]$ mkdir .ssh

[newuser ~]$ touch .ssh/authorized_keys

[newuser ~]$ chmod 600 .ssh/authorized_keys

[newuser ~]$ vim .ssh/authorized_keys

然后我使用vim 将公钥粘贴到authorized_keys。我将在下一步解释我从哪里获得公钥。

ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuS .... 

要创建我在上一步中粘贴的公钥,我按照本参考资料中的步骤从 "Generating an SSH Key" 开始

我从 PuttyKeyGen 复制了公钥,该公钥显示在标有“用于粘贴到 OpenSSH 授权密钥的公钥”的框中。然后我将它粘贴到我的 EC2 实例上的 newuser 目录中的 .ssh/authorized_keys 文件中。

我从 EC2 上的 SSH 客户端注销。然后我尝试使用我的 Windows 机器上新创建的私钥使用 Putty 登录。我使用newuser 登录名。我在 Putty 中收到此错误:server refused our key。还有一个对话框,上面写着Disconnected: No supported authentication methods available server sent: publickey)

我在这些步骤中做错了什么?

【问题讨论】:

【参考方案1】:

我做了两件不同的事情,现在可以了。这可能是它工作的位数。

我使用 PuttyGen 生成了一个新的密钥对,但我使用 1024 位指定了 SSH-2 RSA,而不是 PuttyGen 放入的默认值,例如 2048

当我使用 SSH 重新登录 EC2 时,我使用 nano 而不是 vim 粘贴了公钥。

【讨论】:

【参考方案2】:

始终使用 ec2-import-keypair 功能来验证它是否适用于 EC2 实例。如果导入有效,那就很好,否则,重新生成合规密钥对。如果你只是复制一个不合规的密钥对,你会遇到麻烦。

这是import key pair的文档

OpenSSH 公钥格式(~/.ssh/authorized_keys 中的格式) Base64 编码的 DER 格式 SSH 公钥文件格式,在中指定

RFC4716 DSA 密钥不受支持。确保您的密钥生成器是 设置为创建 RSA 密钥。

支持的长度:1024、2048 和 4096

【讨论】:

以上是关于允许用户使用密钥对通过 SSH 连接到 EC2 Linux 实例的主要内容,如果未能解决你的问题,请参考以下文章

通过 SSH 连接到 EBS 创建的 EC2 实例

尝试使用 RSA 密钥通过 SSH 连接到 EC2,获取:不正确的 RSA1 标识符...权限被拒绝(公钥)

通过 ssh 将 EC2 连接到 Git

AWS EC2 通过Linux终端:使用ssh连接到Linux实例

EC2 和密钥对 - 如何使用不同的 ssh 密钥

如果我的安全组在端口 22 上允许 TCP 并且没有网络访问控制列表,为啥我不能通过 SSH 连接到我的 EC2 实例?