为什么我会在使用基于浏览器的 SSH 控制台访问 Lightsail 实例时收到错误?
当我使用基于浏览器的 SSH 控制台连接到我的 Amazon Lightsail 实例时,我会收到 UPSTREAM_ERROR [515]、UPSTREAM_NOT_FOUND [519] 或 CLIENT_UNAUTHORIZED [769] 消息。
简述
如果您在连接到 Lightsail 实例时收到与 SSH 相关的错误,可能会看到以下消息:
- “Your instance encountered an error and has closed the connection.Try again or contact customer support.UPSTREAM_ERROR [515]”
- “An error occurred and we were unable to connect or stay connected to your instance.If this instance has just started up, try again in a minute or two.UPSTREAM_NOT_FOUND [519]”
- “Login failed.If this instance has just started up, try again in a minute or two.CLIENT_UNAUTHORIZED [769]”
UPSTREAM_ERROR [515] 和 UPSTREAM_NOT_FOUND [519] 错误指示您无法通过 SSH 访问 Lightsail 实例。以下是导致这些错误的常见原因:
- 实例存在问题,如启动失败、状态检查失败或资源利用率过高。
- 操作系统级防火墙阻止 SSH 端口访问。
- SSH 端口 (22) 不是默认端口。
- SSH 服务已关闭。
CLIENT_UNAUTHORIZED [769] 错误指示您的 Lightsail 实例中存在 SSH 身份验证问题。以下是导致此错误的常见原因:
- 您错误地配置了 /etc/ssh/lightsail_instance_ca.pub Lightsail 系统密钥。
- 您将 Ubuntu 实例版本升级到了 20.04 或更高版本。
解决方法
出现实例启动失败、实例状态检查失败或资源利用率过高的问题
查看您的实例指标,确定实例是否未通过系统状态检查或实例状态检查。
系统状态检查
如果系统状态检查失败,说明实例的底层硬件运行不正常。要解决此问题,停止然后启动实例,以将实例迁移到运行正常的硬件。
**警告:**实例的公有 IP 地址会在每次停止和启动实例时改变。如果您不希望公有 IP 地址在每次停止和启动时改变,在停止实例之前附加一个静态 IP 地址。
实例状态检查
如果实例状态检查失败,可能是由于操作系统级问题导致启动错误。或者是由于实例的资源(如 CPU 或内存)可能被过度利用。有关故障排除步骤,请参阅我如何解决导致 Lightsail 实例无响应的常见问题?
操作系统级防火墙阻止 SSH 端口访问
基于浏览器的 SSH 访问使用 Amazon 内部 IP 地址连接到您的 Lightsail 实例。一些操作系统级防火墙和访问控制文件仅允许 SSH 访问一组 IP 地址。在这种情况下,您会收到 UPSTREAM_NOT_FOUND [519] 或 UPSTREAM_ERROR [515]。当防火墙完全阻止 SSH 访问时,也会出现同样的问题。
**注意:**操作系统级防火墙如 Iptables 和 UFW。控制文件如 /etc/hosts.deny,它在基于 cPanel 的实例中托管访问控制。
要解决此问题,请执行以下其中一项操作:
- 如果您可以使用 SSH 从终端或 PuTTY 应用程序访问实例,登录到实例。从防火墙和 /etc/hosts.deny 文件中删除拒绝规则。
- 如果您有 cPanel 实例,访问 WHM 控制台删除防火墙规则。
- 如果您无法使用 SSH 从终端或 PuTTY 应用程序连接到实例,使用启动脚本停用防火墙。您只有在启动实例时能够添加启动脚本。
要使用启动脚本停用操作系统级防火墙、Iptable 和 UFW,请完成以下步骤:
-
在快照选项卡的手动快照下,选择新快照旁边的三个点。
-
选择创建新实例。
-
选择与先前实例相同的可用区。
-
选择添加启动脚本,然后添加以下脚本。
**注意:**以下示例脚本将停用 UFW 防火墙,刷新所有 Iptable 链或防火墙规则,并重命名 /etc/hosts.deny 文件以停用该文件:sudo ufw disable sudo iptables -F sudo mv /etc/hosts.deny /etc/hosts.deny_backup sudo touch /etc/hosts.deny sudo systemctl enable sshd sudo systemctl restart sshd
-
选择一个新实例计划,或使用与先前实例相同的计划。
-
为实例输入名称,然后选择创建实例。
新实例开始运行后,等待 10-15 分钟,然后使用基于浏览器的 SSH 控制台尝试连接到该实例。
注意:如果先前的实例具有静态 IP 地址,则在新实例上使用静态 IP 地址。在 Lightsail 控制台的网络选项卡上,分离静态 IP 地址,然后将其连接到新实例。
SSH 服务已关闭
如果 SSH 服务未在实例上运行或处于活动状态,SSH 连接将失败,您会收到 UPSTREAM_NOT_FOUND [519] 错误。要解决此问题,为您的 Lightsail 实例配置 AWS Systems Manager 会话管理器。然后,在没有 SSH 服务的情况下访问实例解决 SSH 问题。
SSH 问题的基本故障排除步骤包括:
- 根据操作系统的发行版本,查看 /var/log/auth.log 或 /var/log/secure 文件中的 SSH 身份验证日志来确定错误。
- 测试 SSH 配置文件语法,然后更正所有错误:
sudo sshd -t sudo systemctl restart sshd
您错误地配置了 /etc/ssh/lightsail_instance_ca.pub Lightsail 系统密钥
Lightsail 使用 /etc/ssh/lightsail_instance_ca.pub 系统密钥激活基于浏览器的 SSH 访问。如果缺少此文件,SSH 身份验证将失败,您会收到 CLIENT_UNAUTHORIZED [769] 错误。如果没有在 /etc/ssh/sshd_config SSH 配置文件的 TrustedUserCAKeys 参数中未指定 Lightsail 系统密钥,也会发生同样的错误。
如果您可以使用 SSH 通过终端或 PuTTY 应用程序连接到实例,登录到实例。确认 /etc/ssh/sshd_config 文件存在且包含 ssh-rsa 密钥。
如果此文件丢失,则完成以下步骤以重新创建:
-
运行以下命令以确认您在命令的输出中收到了 ssh-rsa 密钥:
sudo cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa
-
如果命令在输出中返回了 ssh-rsa 密钥,运行以下命令将其复制到 /etc/ssh/lightsail_instance_ca.pub:
sudo sh -c "cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa > /etc/ssh/lightsail_instance_ca.pub" sudo sh -c "echo >> /etc/ssh/sshd_config" sudo sh -c "echo 'TrustedUserCAKeys /etc/ssh/lightsail_instance_ca.pub' >> /etc/ssh/sshd_config" sudo systemctl restart sshd
-
如果您没有收到 ssh-rsa 密钥,或者无法使用 SSH 连接到实例,创建该实例的快照。当您从快照启动新实例时,Lightsail 系统密钥会在实例启动时被自动添加到服务器。
您将 Ubuntu 实例版本升级到了 20.04 或更高版本
对于运行 Ubuntu 20.04 或更高版本的实例,必须允许证书颁发机构 (CA) 使用 ssh-rsa 算法签署证书。否则,身份验证将失败,您将收到 CLIENT_UNAUTHORIZED [769] 错误。在 Ubuntu 实例版本 20.04 或更高版本中,默认允许 CA 使用 ssh-rsa 算法。但是,如果您是将较早的 Ubuntu 实例版本升级到 20.04,则必须手动允许 CA。
要手动允许 CA,请完成以下步骤:
-
使用 SSH 客户端(如终端或 PuTTY 应用程序)连接到实例。
-
打开 SSH 配置文件 (/etc/ssh/sshd_config)。
-
将 CA 参数添加到您的 Ubuntu 实例版本的文件中:
Ubuntu 实例版本已升级到 20.04
在 sshd_config 文件中手动输入CASignatureAlgorithms 参数行:
$ sudo vi /etc/ssh/sshd_config $ cat /etc/ssh/sshd_config | egrep "CASignature" CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
Ubuntu 实例版本已升级到 22.04
在 sshd_config 文件中手动输入 CASignatureAlgorithms 和 PubkeyAcceptedAlgorithms 参数行:
$ sudo vi /etc/ssh/sshd_config $ cat /etc/ssh/sshd_config | egrep "CASignature|PubkeyAccepted" CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa-cert-v01@openssh.com,ssh-rsa
-
运行以下命令验证 sshd 配置文件内容:
$ sudo sshd -T
-
运行以下命令重启 sshd 服务:
$ sudo systemctl restart sshd
相关内容
- 已提问 4 个月前lg...
- 已提问 3 个月前lg...
- AWS 官方已更新 9 个月前
- AWS 官方已更新 3 年前
- AWS 官方已更新 10 个月前