一些初次使用 AWS 的小伙伴可能会碰到 SSH 连接不到 Linux EC2 的问题,别着急生成ssh密钥,这篇文章帮你排查常见原因!
无法通过 SSH 连接 EC2 的常见原因通常分为两类,连接超时以及权限错误。根据实际连接时返回的报错信息,直接查看对应的篇章即可。
00
如何使用 SSH 命令?
在动手检查问题之前,我们需要清楚知道如何使用常见的 SSH 客户端连接到 EC2,如果您对此还不熟悉,可以根据自己所使用的操作系统学习对应的技术文档。如果您的操作系统是 Linux 或 MacOS,请参考使用 SSH 连接到 Linux 实例 ,您如果使用的是 Windows 系统,请参考 使用 putty 从 windows 连接到 linux实例。
01
连接超时
问题描述:
创建并启动了 Amazon EC2 Linux 实例,但是无法使用 SSH 或通过 SSH 连接的实用工具(如 PuTTY)连接到实例。在连接到实例时,连接超时,出现类似以下内容的错误:Network error: Connection timed out或者Error connecting to[instance], reason: -> Connection timed out: connect。 该问题通常是由于安全组,路由表,网络 ACL 等网络配件设置不正确导致的。请按照故障排除中的几个步骤检查网络环境。
如遇到其他错误,请查看本文的其他章节。
故障排除:
01
检查安全组
安全组中的 source 为允许访问的 IP 源, port 为允许访问的端口。这是最常见的错误。请检查该实例是否有开放 22 端口,并且允许您的 IP 段访问(source)。提醒一下,为了安全考虑,请尽量将您的 source 定义为只允许特定的 IP 地址段访问(如下图所示,单个 IP 需要在最后加 /32 的后缀), 请检查当前机器的 IP 是否符合此 IP 段。
如果在办公局域网中, 您的 IP 地址可能无法固定,每次上网会发生变化。在这种情况下,此时建议设置 source 为您的办公网络的 IP 段,而不是单个 IP 。
● 如果不知道如何操作,请阅读图下方的详细教程。
● 补充说明:默认情况下该实例也无法 ping 通,如果希望 ping 这台实例,需要以类似的方法添加允许 ICMP 协议的规则。
具体参考如下:
打开 Amazon EC2 控制台。
在导航窗格中,选择 Instances。
查找要通过 SSH 连接的 EC2 实例。
在屏幕底部的 Description 选项卡中,选择要连接的 EC2 实例的安全组。
在屏幕底部的窗格中的 Inbound (入站) 选项卡中,确保设置了允许从当前公有 IP 地址进行 SSH 访问的规则。
如果设备所使用的 IP 不在列表中,请选择 Edit,然后选择 Add rule。
对于 Source,选择 您当前使用的 IP 。0.0.0.0/0 代表对所有 IP 开放。
选择Save
02
检查子网是否为公有子网
公有子网是指允许 Internet 访问的子网。如果您的 EC2 在私有子网中,外界 Internet 是无法进行主动连接的, SSH 也会失败。
检查方法是,选择 VPC 服务,在 左侧的路由表(Route Table)中,选择 EC2 所在的子网,检查路由设定。
具体操作如下:
开 Amazon VPC 控制台。
在导航窗格中,选择 Route Tables,然后从列表中选择您的 VPC 路由表。
在 Routes (路由) 选项卡中,确保有指向 Internet 网关的默认路由。
如果没有,请从导航窗格中选择 Internet Gateways,并复制您的 Internet 网关 ID。如果没有 Internet 网关,请创建一个并将其连接至您的VPC。确保复制新 Internet 网关 的 ID。
返回到 Route Tables,然后选择 Routes 选项卡。
编辑并创建将 0.0.0.0/0 指向您的 Internet 网关 ID 的路由。
保存路由表。
03
检查子网的网络访问控制列表 (ACL)
ACL 为子网级别的防火墙,默认网络 ACL 允许所有入站和出站流量。如果您没有对 ACL 进行过任何更改,请跳过这一步 。
打开 Amazon VPC 控制台。
在导航窗格中,选择 Subnets,然后选择您的子网。
在 Description (描述) 选项卡上,找到 Network ACL (网络 ACL),然后选择其 ID (acl-xxxxxxxx)。
选择网络 ACL。对于 Inbound Rules,验证规则是否允许来自您的计算机的流量。如果不允许,请删除或修改阻止来自您的计算机的流量的规则。对于 Outbound Rules,验证规则是否允许到您的计算机的流量。如果不允许,请删除或修改阻止到您的计算机的流量的规则。
04
确认 ip 地址是否发生变化
如果您曾经对实例进行过关机,然后再次开机的操作(在控制台上表现为,曾经对实例进行过 stop 然后 start 的操作)。在没有绑定弹性 ip 的情况下,您的 ip 地址会发生变化,请在控制台上再次确认此时的 ip 地址。
以下为具体操作步骤:
在导航窗格中,选择 Instances。
查找要通过 SSH 连接的 EC2 实例。
在屏幕底部的 Description 选项卡中,查看 Public IP 与您正在使用的 ip 地址是否一致。如果 IP 地址已经发生变化,请使用新的 IP 地址。
05
镜像的检查
请检查目前您使用的是否是官方的 AMI (镜像),AWS 的官方镜像一般在 Quick Start 当中。
如果 Quick Start 含有您想要的操作系统,请尽量选择 Quick Start 中的镜像。
对于有些不在 Quick Start 中的镜像,如 CentOS , 在Marketplace 当中是提供的,请选择 Marketplace 中发布的镜像,Marketplace 为厂家直供的 AMI。
除非您确定某个 AMI 的安全性,尽量不要使用 community 的镜像。community 属于个人发布的镜像, AWS 无法监管,可能有些社区版的镜像做了一些特殊的安全管理和控制,因此无法直接 SSH 上去。这种情况下,关掉现在的服务器,重新启动一台官方或者 Marketplace 上的镜像即可。
06
检查实例负载
检查实例上的负载,服务器可能已超过负载,导致 sshd 服务无法正常工作,无法接受新的 ssh 请求。可以通过观察 Cloudwatch 的指标确认此类问题。此时最简单的方式是可以尝试 通过 reboot 的方式是否能够解决。如不能,可以通过 system manager 的 session manager 工具尝试打开一个 session 进行相应的 command 操作 kill 掉一些不必要的资源。
07
其他原因
如果上述步骤您经过检查都没有问题,请检查以下原因:
1. 可以通过 stop 实例,然后再次 start 实例 ,来更换 IP 地址。
2. 申请一个 EIP, 然后挂载 EIP 给 EC2。此时 IP 会换为 EIP 的地址。
02
权限相关
问题描述:
创建并启动了 EC2,但是无法使用 SSH 连接到实例,报错信息包括: Host key not found in [directory]、Permissiondenied (publickey) 或 Authentication failed, permission denied。此问题通常因为 秘钥或者用户名错误 导致的权限问题,以下为具体排查方法。
故障排除:
01
检查秘钥对是否正确
每个 EC2 在启动的时候会有一个秘钥,此秘钥为第一次登录到 EC2 上的唯一方法,且只有启动实例前可以下载。请首先选中您的实例,在 Description 页面查看秘钥对的名称生成ssh密钥,确保您使用了正确的秘钥。
02
用户名错误
如果您使用了官方镜像,正确的用户名如下所示:
另外,如果 ec2-user 和 root无法使用,请与 AMI 供应商核实。
如果是社区版本的 AMI, 无法保证其用户名,请与 AMI 制作者联系,或者转用官方 AMI。
03
检查您的秘钥格式
通常,SSH 所需要的秘钥为 pem 格式的(从控制台下载的秘钥即为此格式)。
04
检查秘钥权限
如果遇到错误 bad permissions: ignore key: my_private_key.pem Permission denied (publickey).这种情况是因为您的私钥文件权限太大,任何用户都可以对其进行读写操作,此时,为了保护您的私钥文件, SSH 会忽略您的密钥。 解决方法为,通过以下命令更改秘钥权限:chmod 400 my_private_key.pem
此时其他报错提醒语句可能包含:Permissions 0777 for ‘my_private_key.pem’ are too open. It is required
that your private key files are NOT accessible by others. This private key will be ignored.
05
known_host 相关错误
此情况通常见于切换了 EIP 等情况,比如 EIP 曾经挂载在机器 A 上,用了秘钥 A,此时切换了 EIP 到机器 B 上,对应的秘钥为秘钥 B,这时此 IP 的 known_host 对应 record 不匹配。解决方法为:打开 known_host 文件 (Linux /mac 地址:~/.ssh/known_host ) 删除此 IP 的对应 record。
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信: