Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
为什么我会在使用基于浏览器的 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-rsaUbuntu 实例版本已升级到 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
