【问题标题】:Amazon AWS EC2 Instance - Can't connect with SSHAmazon AWS EC2 实例 - 无法通过 SSH 连接
【发布时间】:2013-01-06 03:28:05
【问题描述】:

这不应该这么难。我无法通过 SSH 客户端连接到新的 AWS EC2 实例。我从 Win 7 机器连接。

实例操作系统:Debian 6

AMI:debian-squeeze-i386-20121119-e4554303-3a9d-412e-9604-eae67dde7b76-ami-1977f070.1(ami-a121a6c8)

用户:试过rootec2-user

使用 AWS 生成并下载的 .pem 密钥对

已确认实例上的安全组和密钥对名称

SSH 端口 22 已打开:Nmap 如此说明,Telnet 收到欢迎回复

使用 3 个不同的客户端:所有客户端都连接正常

腻子回复:Server refused our key

MindTerm Java 浏览器插件回复:Authentication failed, permission denied

Bitvise SSH 回复:Attempting 'publickey' auth; auth failed;

重启实例,清洗,冲洗,重复...

重建新实例和新密钥对,清洗,冲洗,重复......

连接不是问题。为什么实例不接受 .pem 文件作为密码?我还缺少其他步骤吗?我遵循了每一个我可以谷歌的指南。 AWS 支持是个笑话。 * 来救援...

TIA。

【问题讨论】:

  • 有人同时使用 EC2 和 Debian 6 吗?用户名是否不同?我读到 ubuntu 实例有不同的用户名(呃,“ubuntu”),但我也尝试了“debian”,没有骰子......
  • 由于 EC2 允许第三方发布 AMI。用户名可以是发布者决定设置的任何内容。某些情况下它的 root、ec2-user、ubuntu、bitnami 等。

标签: ssh amazon-ec2 debian


【解决方案1】:

根据debian wiki,其中包含有关您正在使用的 AMI 的文档,您需要用于登录的用户名是“admin”。

【讨论】:

  • Alpine Linux AMI 没有记录,用户名为 alpine - 以 USER 身份登录后变为 root,您需要 sudo -s
【解决方案2】:

我在通过 ssh 连接到 EC2 时遇到了很多问题。

ssh -i the-keypair-filename root@yourdomain.com

- 密钥对文件必须在同一目录中。 - 我只是使用终端连接。

确保在启动实例时生成或分配密钥对。

您还可以验证您在 AWS 管理控制台中设置的密钥对,方法是选择正在运行的实例,然后查找“密钥对名称:”。

我希望这会有所帮助。

【讨论】:

  • CoderDan,我在哪里发出该命令? (如果需要,假设 PuTTY,或者告诉我你的客户)我从 Win 7 机器连接。终端??
  • 很抱歉延迟回复。但我使用的是 mac os x,在 windows 上我认为它可以在命令行中工作
  • 太棒了!错过了我在启动实例时必须分配密钥对,这给我带来了所有问题。谢谢!
  • 您也可以在任何位置使用ssh -i /path/to/my.pem user@host
【解决方案3】:

我的问题是我没有在 fstab 文件中添加预期的卷,因此服务器没有完全启动并且 sshd 守护程序没有运行。

检查:

    telnet HOST 22

检查服务器日志以确保它在您像我一样浪费大量时间之前正常启动。

【讨论】:

    【解决方案4】:

    使用 ec2-user 密码的 Amazon Linux AMI 列在此页面底部。

    http://aws.amazon.com/amazon-linux-ami/

    如果尝试使用 ec2-user,请检查您是否使用其中之一,或查看您正在使用的 AMI 的文档。

    泰瑞

    【讨论】:

      【解决方案5】:

      尝试使用“admin”用户名并忽略亚马逊建议的用户名。

      【讨论】:

        【解决方案6】:

        我有类似的问题,我已经通过以下方法解决了这个问题。

        1) 编辑了我的 chef 文件夹中的 knife.rb 文件,即 :\Users\Administrator\chef-starter\chef-repo.chef\knife.rb 如下:

        knife[:aws_access_key_id]     = "xxxxxxxxxxxxxxxxxxxx"
        knife[:aws_secret_access_key] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        knife[:region]                = 'ap-southeast-1'
        knife[:aws_ssh_key_id] = "ChefUser"
        knife[:ssh_user]="ec2-user"
        

        在命令提示符下,发出创建ec2-server的命令:

        knife ec2 server create -r "role[webserver]" --image ami-abcd1234 --flavor t1.micro -G  ChefClient -x root -N server01 -i H:\Chef-files\ChefUser.pem
        

        请注意,即使我已经在 knife.rb 文件中提供了所有详细信息,我也必须通过 -i 选项在 coomand 行中提供 .pem 文件路径。这解决了我的问题。

        检查一下,如果我的解决方案对你有帮助。

        干杯,

        陈丹

        【讨论】:

          【解决方案7】:

          以“ubuntu”身份登录对我有用:

          ssh -i private_key.pem ubuntu@myubuntuserver

          希望对你有帮助

          --艾琳

          【讨论】:

          • 我认为原始发帖人说使用 Debian,而不是 Ubuntu。