标签:机制 gui 很多 blog 意思 save center direct 供应商
对于这个题目,发一个blog挺不好意思的。但是很多用户 对AWS EC2连接却总是出现各类的问题。因为AWS的虚拟机不是直接使用用户名和密码就可以直接SSH上去,它严格遵循证书机制。借此直接拿我们总结的文档分享一下。前提条件:如何进行 ssh 连接
OS | UserName |
---|---|
Amazon Linux | ec2-user |
centos | centos |
ubuntu | ubuntu |
自定义AMI | YourName |
此文主要涉及两大类错误类型,分别为 连接超时 以及 权限相关。请根据实际报错信息,查看相应的详细篇章。
——————————————————————————————————
问题描述
创建并启动了 Amazon EC2 Linux 实例,但是无法使用 SSH 或通过 SSH 连接的实用工具(如 PuTTY)连接到实例。在连接到实 例时,连接超时,出现类似以下内容的错误: Networ error: Connection timed out或者 Error connecting to [instance], reason: -> Connection timed out: connect。该问题通常是由于安全组,路由表,网络 ACL 等网络配置设置不正确导致的。请按照故障排除中的几个步骤检查网络环境。
安全组中的 source 为允许访问的 ip 源, port 为允许访问的端口。这是最常见的错误。 请检查该实例是否有开放 22 端口,并且
允许您的 ip 段访问(source)。为了安全考虑,请尽量讲您的 source 定义为只允许特定的 ip 地址段访问(如下图所示,单个ip
需要在最后加/32的后缀), 请检查当前机器的 ip 是否符合此 ip 段。
具体操作如下。
1.打开 Amazon EC2 控制台。
2.在导航窗格中,选择 Instances。
3.查找要通过 SSH 连接的 EC2 实例。
4.在屏幕底部的 Description 选项卡中,选择要连接的 EC2 实例的安全组。
5.在屏幕底部的窗格中的 Inbound (入站) 选项卡中,确保设置了允许从当前公有 IP 地址进行 SSH 访问的规则。
6.如果设备所使用的 IP 不在列表中,请选择 Edit,然后选择 Add rule。
7.对于 Source,选择 您当前使用的IP 。 0.0.0.0/0 代表对所有 ip 开放。
8.选择 Save。
在说这个之前,建议大家把非必要暴露在公网的服务器,尽量置放到私有子网中,通过跳板机或堡垒主机来管理自己的服务器。
公有子网是指允许 Internet 访问的子网。如果你的 EC2 在私有子网中,外界 Internet 是无法进行连接的, ssh 也会失败。
检查方法是,选择 VPC 服务,在 左侧的路由表(Route Table)中,选择 EC2 所在的子网,检查路由设定。
1.开 Amazon VPC 控制台。
2.在导航窗格中,选择 Route Tables,然后从列表中选择您的 VPC 路由表。
3.在 Routes (路由) 选项卡中,确保有指向 Internet 网关的默认路由。
4.如果没有,请从导航窗格中选择 Internet Gateways,并复制您的 Internet 网关 ID。如果没有 Internet 网关,请创建一个并将其连接至您的 VPC。确保复制新 Internet 网关 的 ID。
5.返回到 Route Tables,然后选择 Routes 选项卡。
6.编辑并创建将 0.0.0.0/0 指向您的 Internet 网关 ID 的路由。
7.保存路由表。
ACL 为子网级别的防火墙,默认网络 ACL 允许所有入站和出站流量。如果您没有对 ACL 进行过任何更改,请跳过这一步 。
如果您曾经对实例进行过关机,然后再次开机的操作(在控制台上表现为,曾经对实例进行过 stop 然后 start 的操作)。在没有绑定弹性 ip 的情况下,您的ip地址已经发生变化,请在控制台上再次确认此时的 ip 地址。以下为具体操作步骤:
请检查目前您使用的是否是官方的 AMI (镜像)。AWS的官方镜像一般在 Quick Start 当中,对于CentOS,在Marketplace中。
检查实例上的负载,服务器可能已超过负载,导致sshd服务无法正常工作,无法接受新的 ssh 请求。可以通过观察 Cloudwatch的指标确认此类问题。此时最简单的方式是可以尝试 通过 reboot 的方式是否能够解决。
如不能,可以通过 system manager 的session manager 工具尝试打开一个 session 进行相应的 command 操作 kill 掉一些不必要的资源。
如果上述步骤您经过检查都没有问题,请检查以下原因:
创建并启动了 EC2,但是无法使用 SSH 连接到实例,报错信息包括: Host key not found in [directory]、Permission denied (publickey) 或 Authentication failed, permission denied。此问题通常因为 秘钥或者用户名错误 导致的权
限问题,以下为具体排查方法。
每个 EC2 在启动的时候会有一个秘钥,此秘钥为第一次登录到EC2上的唯一方法,且只有启动实例前可以下载。请首先选中您的实例,在 Description 页面查看秘钥对的名称,确保您使用了正确的秘钥。
如果您使用了官方镜像,正确的用户名如下所示:
对于 Amazon Linux 2 或 Amazon Linux AMI,用户名称是 ec2-user。
对于 CentOS AMI,用户名称是 centos。
对于 Debian AMI,用户名称是 admin 或 root。
对于 Fedora AMI,用户名为 ec2-user 或 fedora。
对于 RHEL AMI,用户名称是 ec2-user 或 root。
对于 SUSE AMI,用户名称是 ec2-user 或 root。
对于 Ubuntu AMI,用户名称是 ubuntu。
另外,如果 ec2-user 和 root 无法使用,请与 AMI 供应商核实。
如果是社区版本的 AMI, 无法保证其用户名,请与 AMI 制作者联系,或者转用官方 AMI。
通常,ssh 所需要的秘钥为pem格式的(从控制台下载的秘钥即为此格式)。
如果遇到错误 bad permissions: ignore key: my_private_key.pem Permission denied (publickey).
这种情况是因为您的私钥文件权限太大,任何用户都可以对其进行读写操作,此时,为了保护您的私钥文件, SSH 会忽略您的密钥。 解决方法为,通过以下命令更改秘钥权限:chmod 400 my_private_key.pem
此情况通常见于切换了 EIP 等情况,比如 EIP 曾经挂载在机器 A 上,用了秘钥 A,此时切换了 EIP 到机器 B 上,对应的秘钥为秘钥 B,这时此 IP 的 known_host 对应 record 不匹配。解决方法为:打开 known_host 文件 (Linux /mac 地址: ~/.ssh/known_host ) 删除此 IP 的对应 record。
标签:机制 gui 很多 blog 意思 save center direct 供应商
原文地址:https://blog.51cto.com/13746986/2506306