在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例

Posted

技术标签:

【中文标题】在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例【英文标题】:SSH to Amazon EC2 instance using PuTTY in Windows 【发布时间】:2012-05-04 11:10:27 【问题描述】:

我是 Amazon Web 服务的新手,正在尝试使用 windows 中的 putty 启动一个 Amazon 实例并通过 SSH 连接到它。这些是我遵循的步骤:

    已创建密钥对。

    为 SSH 和 HTTP 添加了安全组规则。

    使用上述密钥对和安全组启动 EC2 实例。

    使用 PuTTYgen 将 *.pem 文件转换为 *.ppk

    使用 putty 尝试连接到实例的公共 DNS 并提供 *.ppk 文件。

我使用“root”和“ec2-user”登录,并使用 SSH1 和 SSH2 创建了 PPK 文件,对于所有这些尝试,我在 putty 中收到以下错误,

“服务器拒绝了我们的密钥”

请大家帮忙,任何建议将不胜感激。

【问题讨论】:

你可能想看看这个:wowza.com/forums/… 您使用的 AMI 是哪个操作系统? @Geoff:谢谢!我使用的是 amzn-ami-2011.09.1.x86_64-ebs (ami-7341831a),它说有 Amazon Linux 平台。 谢谢,在发布问题之前我确实检查了这个链接,我正在遵循其中提到的所有步骤。仍然收到错误! 如果您使用的是 Amazon Linux,那么您应该使用 ec2-user 登录 - root 将永远无法工作。但是您也已经尝试过ec2-user。您确定实例已配置为使用此密钥对?并且您正在为您的实例连接到正确的弹性 IP 地址或 AWS 公共 DNS? 【参考方案1】:

我假设 OP 已经解决了这个问题或者继续前进,但答案是使用 ubuntu 作为用户(如果服务器是 ubuntu)。

【讨论】:

这太棒了。没有涵盖我发现的任何明显位置。 Brilliant :-) 两年过去了,Amazon 文档仍未更新,并声明用户是所有 Amazon Linux AMI 的“ec2-user”。即使 OP 继续前进,我也会合理地接受这个作为答案。 @Jason 所有 Amazon Linux AMI 的用户 ec2-user。 Ubuntu 不是亚马逊 Linux。 “Amazon Linux”是来自 Amazon 的特定 Linux 发行版。 Amazon 还提供其他 Linux 发行版,例如 RHEL(用户是 ec2-user 或 root)、CentOS(用户是 centos)、Ubuntu(用户是 ubuntu 或 root)、Fedora(用户是 ec2-user)和 SUSE(用户是 ec2 -user 或 root)。【参考方案2】:

1) 确保您在 EC2 实例的安全组中打开了端口 22 (SSH)。

2) 尝试使用弹性 IP 而不是公共 DNS 名称连接。

我希望你已经按照这些步骤Connecting EC2 from a Windows Machine Using PuTTY

【讨论】:

使用弹性 IP 地址连接在我的情况下有效。创建和关联 IP 地址后,我失去了访问权限。谢谢! 他说问题是身份验证,而不是 DNS 解析或防火墙。【参考方案3】:

另一种情况是,当我从 windows 使用 putty 连接到运行 ubuntu 的 EC2 实例时,出现“服务器拒绝我们的密钥”错误:

私钥被错误地从 .pem 转换为 .ppk。

puttygen 有两个“转换密钥”选项。

    使用 File->Load Private Key 选项将您的 .pem 文件加载到 puttygen 中,然后使用 Save Private Key 按钮将其另存为 .ppk 文件。 请勿使用菜单选项Conversions->Import Key加载EC2生成的.pem文件。

    请参阅下面的 puttygen 屏幕截图,并标记了两个菜单选项。

【讨论】:

【参考方案4】:

检查用户名,你的机器应该是“ubuntu”。 检查是否在安全组中的端口 22 上启用了流量。 检查您是否使用了正确的网址,即 ubuntu@public/elasticip

【讨论】:

很好,你也完成了我的查询【参考方案5】:

也许值得再检查一件事。转到 AWS 控制台,右键单击实例并选择“连接...”。它将显示您要使用的 DNS 名称。如果您在某个时候重新启动该实例,则该 DNS 名称可能已更改。

【讨论】:

【参考方案6】:

当我尝试连接由 Elastic Beanstalk 服务 (EBS) 自动创建的实例时,我遇到了类似的问题。但是,一旦我将现有的密钥名称链接到 EBS(在 Environment Details -> Edit Configuration -> Server Tab -> Existing Key Pair 下),我就能够使用“ec2-user”和现有的密钥文件登录(转换为.ppk) 与腻子。

然而,这会终止正在运行的实例并通过上述密钥对重新构建一个新实例。

【讨论】:

【参考方案7】:

以防万一它对其他人有所帮助,我在更改实例中主文件夹的权限后遇到了此错误。我正在测试一些东西,并在我的主文件夹上执行了 chmod -R 777 。一旦发生这种情况,一旦我退出,我实际上就被锁定了。

【讨论】:

【参考方案8】:

如果您直接使用“.pem”文件而不是转换后的“.ppk”文件对 AWS 进行 SSH,则不会遇到此错误。

1) 使用 Git Bash 代替 putty。因为您可以在 Git Bash 中运行所有 Linux 命令。通过安装 Git,您可以访问 Git Bash 终端

2) 右键单击​​您拥有“.pem”的文件夹并选择“Git Bash Here”。

3) 您的密钥不得公开查看,SSH 才能正常工作。所以运行“chmod 400 pemfile.pem”。

4) 使用其公共 DNS 连接到您的实例 - "ssh -i "pemfile.pem" ec2-user@ec2-x-x-x-x.us-west-1.compute.amazonaws.com"

5) 确保在 your_instance->security_group->inbound_rules 中将您的 SSH 网络 IP 列入白名单

【讨论】:

使用 Git Bash 代替 Putty 为我工作。谢谢!【参考方案9】:

我假设您正在关注this guide,并使用subsequent page 上的说明进行连接。验证几件事:

    您正确转换了密钥,例如选择正确的 .pem 文件,保存为 private 密钥,1024 位 SSH-2 RSA Auth 设置(连接教程中的第 4 步)正确

【讨论】:

【参考方案10】:

在我将我正在使用的 debian AMI 的用户名更改为“admin”之前,我遇到了同样的问题(并采取了相同的步骤)。

您应该查找正在使用的 AMI 的用户名。 debian AMI 记录在这里 http://wiki.debian.org/Cloud/AmazonEC2Image/Squeeze

【讨论】:

【参考方案11】:

我也遇到过同样的问题。您使用的 AMI 也是“Cloud Formation”模板解决方案使用的那个。

最后我放弃了,并创建了一个 Red Hat 实例。然后我可以使用用户 root 通过 SSH 正常连接。

此处的说明:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html 在使用 Red Hat 实例但不使用 Amazon Linux 实例时可以正常工作。我假设他们有一些我不想尝试的用户名(root、ec2-user 和许多其他明显的用户名,都被拒绝了)

希望对某人有所帮助!

【讨论】:

更新:我已经创建了一个“云形成”设置并且 SSH 很好。这次我使用了允许您指定密钥对的模板。许多库存模板不允许这样做,因为您似乎无法在创建后添加密钥对,这意味着您永远无法 SSH。【参考方案12】:

我使用 Debain AMI,我尝试使用 ec2-user,root 但正确的登录名是“admin”。

【讨论】:

【参考方案13】:

当我尝试创建新的密钥对并尝试使用新的 pem/ppk 文件时,我遇到了同样的错误。我注意到实例上的 Key Pair Name 字段仍然是旧的并且正在四处寻找。显然,你 can't change 一个密钥对。所以我回到原来的密钥对。幸运的是,我没有删除任何内容,所以这很容易。

【讨论】:

【参考方案14】:

尝试其他 SSH 客户端,例如 Poderosa。它接受 pem 文件,因此您无需转换密钥文件。

【讨论】:

Poderosa 需要原始的 pem 文件,但是转换后的文件是 puttygen 创建的 Poderosa 需要原始的 pem 文件,而不是 puttygen 创建的转换后的文件【参考方案15】:

如果您已有密钥对,请按以下步骤操作: 使用 PuTTYgen 将 *.pem 转换为 *.ppk(加载 pem 文件密钥,然后保存 ppk) 将 ppk 身份验证密钥文件添加到 Putty SSH>身份验证选项 输入“主机名(或 IP 地址)”字段:ubuntu@your-ip-address-of-ubuntu-ec2-host))

【讨论】:

以上是关于在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例的主要内容,如果未能解决你的问题,请参考以下文章

PuTTY:更改默认 SSH 登录目录 [关闭]

AWS之SSH登录:使用 PuTTY 从 Windows 连接到 Linux 实例

Windows7下最好用的SSH客户端是哪个

Ubuntu安装SSH + Windows上配置Putty

Putty使用密钥登陆SSH

无法通过运行 OpenSSH 的 SSH 连接到 Windows 10