使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

为什么我会在使用基于浏览器的 SSH 控制台访问 Lightsail 实例时收到错误?

3 分钟阅读
0

当我使用基于浏览器的 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,请完成以下步骤:

  1. 打开 Amazon Lightsail 控制台

  2. 创建实例的手动快照

  3. 快照选项卡的手动快照下,选择新快照旁边的三个点。

  4. 选择创建新实例

  5. 选择与先前实例相同的可用区。

  6. 选择添加启动脚本,然后添加以下脚本。
    **注意:**以下示例脚本将停用 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
  7. 选择一个新实例计划,或使用与先前实例相同的计划。

  8. 为实例输入名称,然后选择创建实例

新实例开始运行后,等待 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 密钥。

如果此文件丢失,则完成以下步骤以重新创建:

  1. 运行以下命令以确认您在命令的输出中收到了 ssh-rsa 密钥:

    sudo cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa
  2. 如果命令在输出中返回了 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
  3. 如果您没有收到 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,请完成以下步骤:

  1. 使用 SSH 客户端(如终端或 PuTTY 应用程序)连接到实例。

  2. 打开 SSH 配置文件 (/etc/ssh/sshd_config)。

  3. 将 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 文件中手动输入 CASignatureAlgorithmsPubkeyAcceptedAlgorithms 参数行:

    $ 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
  4. 运行以下命令验证 sshd 配置文件内容:

    $ sudo sshd -T
  5. 运行以下命令重启 sshd 服务:

    $ sudo systemctl restart sshd
AWS 官方
AWS 官方已更新 10 个月前