允许用户使用密钥对通过 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 实例的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 RSA 密钥通过 SSH 连接到 EC2,获取:不正确的 RSA1 标识符...权限被拒绝(公钥)
AWS EC2 通过Linux终端:使用ssh连接到Linux实例
如果我的安全组在端口 22 上允许 TCP 并且没有网络访问控制列表,为啥我不能通过 SSH 连接到我的 EC2 实例?