无法通过 SSH 连接到 EC2 实例,但可以访问 AWS 控制台
can't SSH into EC2 instance, but have AWS console access
我拥有 AWS 控制台的管理员权限,可以查看 EC2 实例,start/stop,等等。但我无法通过 SSH 连接到 EC2。我不确定 .pem 密钥是否错误。
我有什么选择?
我可以直接在Linode或者Digital Ocean中重置root密码,然后远程SSH进去。
但我在 AWS 上没有这些选项。
我已经试过了,它挂了。前任。我的虚拟机 IP = 1.1.1.1
➜ ~ ssh -i ~/.ssh/app.pem ubuntu@1.1.1.1 -v
OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/alpha/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug1: Connecting to 1.1.1.1 [1.1.1.1] port 22.
^C
➜ ~
我该如何进一步调试呢?我如何获得 SSH 访问权限?
我该怎么办?
为了能够通过 SSH 连接到 EC2 实例,您需要配置 EC2 密钥对。如果您这样做了,但不知何故被“锁定”了,例如,您丢失了密钥,您应该能够使用系统管理器 (SSM) 重新获得访问权限。
在这里查看如何使用 SSM 连接到 EC2 实例:https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html
最好的,斯特凡
您应该逐步完成创建到 AWS 的 SSH 连接所需的所有连接元素。
首先,确保您的本地网络允许连接。大多数家庭路由器允许出站到任何端口,但如果您使用的是工作网络,它们可能会过滤端口 22(SSH 的默认端口)。您可能需要确保您对计算机的出站请求不会被防火墙丢弃。
接下来,您需要确保 NACL 不会导致问题。您的 EC2 实例所在的 VPC 子网具有 NACL。默认情况下,它们不过滤任何内容。但是,您应该确保您没有过滤入站端口 22 TCP 或出站临时端口(端口 1024->65535)。这些临时端口是必需的,因为 return 端口(您这边)在该端口范围内将是动态和随机的。
您需要确保您的实例附加了一个安全组,并且它允许端口 22 TCP (SSH) 入站。这很重要,因为默认情况下,它不会允许任何入站端口。如果需要创建安全组,可以在 EC2 服务页面上进行。创建一个新的允许 SSH 入站的 TCP,至少在您的 IP 上(如果您的 IP 是 2.3.4.5,则应在地址字段中输入 2.3.4.5/32)。然后将其附加到您的实例。附件应该是即时的(无需重新启动)。警告:如果您没有适当保护的实例,允许所有 IP (0.0.0.0/0) 可能很危险,因为它会允许所有 IP 尝试通过该端口连接。与 NACL 不同,安全组是有状态的,因此无需在您的安全组中列出临时端口。
我假设您正在使用 'sane' AMI 启动,但如果这以前有效但现在无效,您应该考虑是否使用防火墙将自己锁定在OS 级别。如果您以某种方式在 OS 级别放置规则以拒绝端口 22,或者如果 sshd 不是 运行,您将出于显而易见的原因遇到问题。此处的修复会很复杂,但如果您这样做的话,这是可能的。
您已经意识到需要确保拥有正确的密钥对。通过查看 EC2 页面上的实例数据来验证您使用的是哪个密钥对,并使用该密钥登录。确保您为您的发行版使用正确的默认用户名(它们可能因类型而异 - 通常是 'ec2-user',但 centos 例如是用户 'centos'。YMMV,所以查一下!)
如果问题仍然存在,您始终可以在包含您的实例的 VPC 上启用 VPC 流日志。这将为进出您的 VPC 的每个数据包创建一个日志条目,这样您至少可以查看流量是否正在进入 VPC,如果是,是否被拒绝或转发到实例。
关于家庭路由器,你提出了一个很好的观点,但不要
太快忽略它。
我的 Netgear N300(我知道的很古老)有一个被封锁的服务区。
我和ssh操作超时纠缠了好久,
最后我禁用了我所有的路由器阻塞服务,我是
能够立即通过 ssh 进入我的 aws linix 实例
我拥有 AWS 控制台的管理员权限,可以查看 EC2 实例,start/stop,等等。但我无法通过 SSH 连接到 EC2。我不确定 .pem 密钥是否错误。
我有什么选择?
我可以直接在Linode或者Digital Ocean中重置root密码,然后远程SSH进去。 但我在 AWS 上没有这些选项。
我已经试过了,它挂了。前任。我的虚拟机 IP = 1.1.1.1
➜ ~ ssh -i ~/.ssh/app.pem ubuntu@1.1.1.1 -v
OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/alpha/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug1: Connecting to 1.1.1.1 [1.1.1.1] port 22.
^C
➜ ~
我该如何进一步调试呢?我如何获得 SSH 访问权限?
我该怎么办?
为了能够通过 SSH 连接到 EC2 实例,您需要配置 EC2 密钥对。如果您这样做了,但不知何故被“锁定”了,例如,您丢失了密钥,您应该能够使用系统管理器 (SSM) 重新获得访问权限。
在这里查看如何使用 SSM 连接到 EC2 实例:https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html
最好的,斯特凡
您应该逐步完成创建到 AWS 的 SSH 连接所需的所有连接元素。
首先,确保您的本地网络允许连接。大多数家庭路由器允许出站到任何端口,但如果您使用的是工作网络,它们可能会过滤端口 22(SSH 的默认端口)。您可能需要确保您对计算机的出站请求不会被防火墙丢弃。
接下来,您需要确保 NACL 不会导致问题。您的 EC2 实例所在的 VPC 子网具有 NACL。默认情况下,它们不过滤任何内容。但是,您应该确保您没有过滤入站端口 22 TCP 或出站临时端口(端口 1024->65535)。这些临时端口是必需的,因为 return 端口(您这边)在该端口范围内将是动态和随机的。
您需要确保您的实例附加了一个安全组,并且它允许端口 22 TCP (SSH) 入站。这很重要,因为默认情况下,它不会允许任何入站端口。如果需要创建安全组,可以在 EC2 服务页面上进行。创建一个新的允许 SSH 入站的 TCP,至少在您的 IP 上(如果您的 IP 是 2.3.4.5,则应在地址字段中输入 2.3.4.5/32)。然后将其附加到您的实例。附件应该是即时的(无需重新启动)。警告:如果您没有适当保护的实例,允许所有 IP (0.0.0.0/0) 可能很危险,因为它会允许所有 IP 尝试通过该端口连接。与 NACL 不同,安全组是有状态的,因此无需在您的安全组中列出临时端口。
我假设您正在使用 'sane' AMI 启动,但如果这以前有效但现在无效,您应该考虑是否使用防火墙将自己锁定在OS 级别。如果您以某种方式在 OS 级别放置规则以拒绝端口 22,或者如果 sshd 不是 运行,您将出于显而易见的原因遇到问题。此处的修复会很复杂,但如果您这样做的话,这是可能的。
您已经意识到需要确保拥有正确的密钥对。通过查看 EC2 页面上的实例数据来验证您使用的是哪个密钥对,并使用该密钥登录。确保您为您的发行版使用正确的默认用户名(它们可能因类型而异 - 通常是 'ec2-user',但 centos 例如是用户 'centos'。YMMV,所以查一下!)
如果问题仍然存在,您始终可以在包含您的实例的 VPC 上启用 VPC 流日志。这将为进出您的 VPC 的每个数据包创建一个日志条目,这样您至少可以查看流量是否正在进入 VPC,如果是,是否被拒绝或转发到实例。
关于家庭路由器,你提出了一个很好的观点,但不要 太快忽略它。 我的 Netgear N300(我知道的很古老)有一个被封锁的服务区。
我和ssh操作超时纠缠了好久, 最后我禁用了我所有的路由器阻塞服务,我是 能够立即通过 ssh 进入我的 aws linix 实例