AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
为什么我会在使用基于浏览器的 SSH 控制台访问 Lightsail 实例时收到错误?
当我使用基于浏览器的 SSH 控制台连接到 Amazon Lightsail 实例时,我收到 "UPSTREAM_ERROR [515]"、"UPSTREAM_NOT_FOUND [519]" 或 "CLIENT_UNAUTHORIZED [769]" 错误消息。
简短描述
您收到以下错误消息之一:
- "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]"
当您无法通过 SSH 控制台连接到 Lightsail 实例时,就会出现 "UPSTREAM_ERROR [515]" 和 "UPSTREAM_NOT_FOUND [519]" 错误。
以下原因可能会导致连接问题:
- 实例启动失败、状态检查失败或过度使用 CPU 或内存资源。
- 操作系统 (OS) 级防火墙阻止 SSH 端口访问。
- SSH 端口 22 不是默认的端口配置。
- SSH 服务已关闭。
当 Lightsail 实例中存在 SSH 身份验证问题时,您会收到 "CLIENT_UNAUTHORIZED [769]" 错误。
以下原因可能会导致身份验证问题:
- 您错误地配置了 /etc/ssh/lightsail_instance_ca.pub Lightsail 系统密钥。
- 您在将 Ubuntu 实例版本升级到 20.04 或更高版本时没有使用所需的 SSH 配置。
解决方法
检查实例运行状况和状态
查看您的实例指标以检查系统或实例状态检查是否失败。
如果系统状态检查失败,则停止并重启实例以将其迁移到运行状况良好的硬件。
**警告:**每次停止和启动实例后,实例的公有 IP 地址都会发生变化。如果您不希望地址发生变化,请在停止实例之前分配静态 IP 地址。
如果实例状态检查失败,则可能是由于操作系统级问题导致启动错误。或者,实例的资源可能被过度使用。有关更多信息,请参阅如何对导致 Lightsail 实例无响应的常见问题进行故障排除?
解决防火墙问题
如果操作系统级防火墙(例如 iptables 或简单防火墙 (UFW))阻止了访问,则执行以下操作之一:
- 如果您可以通过终端或 PuTTY 进行 SSH 访问,请从防火墙和 /etc/hosts.deny 文件中移除拒绝规则。对于 cPanel 实例,请使用 Web 主机管理器 (WHM) 控制台来移除防火墙规则。
- 如果您没有 SSH 访问权限,请创建一个新实例并添加一个启动脚本以停用防火墙和 /etc/hosts.deny 文件。
要使用启动脚本停用操作系统级防火墙,请完成以下步骤:
-
打开 Lightsail 控制台。
-
从快照创建实例。
**注意:**选择与先前实例相同的可用区。 -
选择 Add launch script(添加启动脚本),然后添加以下脚本:
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**注意:**上述示例脚本将停用 UFW 防火墙,刷新所有 Iptable 链或防火墙规则,并重命名 /etc/hosts.deny 文件以停用该文件。
-
选择一个新实例计划,或使用与先前实例相同的计划。
-
为实例输入名称,然后选择 Create instance(创建实例)。
新实例开始运行后,等待 10-15 分钟,然后使用基于浏览器的 SSH 控制台连接到该实例。
**注意:**如果先前的实例具有静态 IP 地址,则将该静态 IP 地址分配给新实例。选择 Lightsail 控制台上的 Networking(联网)选项卡,分离静态 IP 地址,然后将其附加到新实例。
解决 SSH 服务问题
如果 SSH 服务未在实例上运行或处于活动状态,SSH 连接将失败,您会收到 "UPSTREAM_NOT_FOUND [519]" 错误。要对此问题进行故障排除,请为您的 Lightsail 实例配置会话管理器(AWS Systems Manager 的一项功能)。然后,在没有 SSH 服务的情况下访问实例以解决问题。
完成以下步骤:
-
查看以下 SSH 身份验证日志文件之一,检查错误消息或失败的身份验证尝试:
Ubuntu 日志文件:
/var/log/auth.log
Amazon Linux 日志文件:
/var/log/secure -
如果文件显示错误消息,则执行以下操作之一:
对于 "Invalid user" 或 "Failed password" 消息,请在 /etc/ssh/sshd_config 文件中检查 SSH 密钥配置。
对于 "Connection refused" 消息,请运行以下命令以确认 SSH 服务正在运行:sudo systemctl status sshd对于 "Permission denied" 消息,请运行以下命令来检查 SSH 目录和密钥文件的权限:
sudo chmod 700 ~/.ssh sudo chmod 600 ~/.ssh/authorized_keys -
如果没有错误消息,则运行以下命令来测试并重新启动 SSH 配置:
sudo sshd -t sudo systemctl restart sshd
恢复 Lightsail 系统密钥
如果 /etc**/ssh/lightsail_instance_ca.pub** 密钥缺失,请完成以下步骤:
-
如果您可以通过终端或 PuTTY 进行 SSH 访问,请运行以下命令来验证 ssh-rsa 密钥:
sudo cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa -
执行以下操作之一:
如果密钥存在,则运行以下命令将其恢复: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 或更高版本配置 SSH
如果您将较早的 Ubuntu 实例版本升级到 20.04,则必须手动允许证书颁发机构 (CA) 使用 ssh-rsa 密钥来签署证书。如果您创建了运行 Ubuntu 20.04 或更高版本的实例,则 CA 默认可以使用 ssh-rsa 算法。
要手动允许 CA,请完成以下步骤:
-
使用 SSH 客户端(如终端或 PuTTY 应用程序)连接到实例。
-
打开 /etc/ssh/sshd_config SSH 配置文件。
-
将 CA 参数添加到您的 Ubuntu 实例版本的文件中。
Ubuntu 20.04:
运行以下命令,将 CASignatureAlgorithms 参数行添加到 sshd_config 文件中: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:
运行以下命令,将 CASignatureAlgorithms 和 PubkeyAcceptedAlgorithms 参数行同时添加到 sshd_config 文件中: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
