跳至内容

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

3 分钟阅读
0

当我使用基于浏览器的 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 文件。

要使用启动脚本停用操作系统级防火墙,请完成以下步骤:

  1. 打开 Lightsail 控制台

  2. 创建实例的手动快照

  3. 从快照创建实例
    **注意:**选择与先前实例相同的可用区。

  4. 选择 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 文件以停用该文件。

  5. 选择一个新实例计划,或使用与先前实例相同的计划。

  6. 为实例输入名称,然后选择 Create instance(创建实例)。

新实例开始运行后,等待 10-15 分钟,然后使用基于浏览器的 SSH 控制台连接到该实例。

**注意:**如果先前的实例具有静态 IP 地址,则将该静态 IP 地址分配给新实例。选择 Lightsail 控制台上的 Networking(联网)选项卡,分离静态 IP 地址,然后将其附加到新实例。

解决 SSH 服务问题

如果 SSH 服务未在实例上运行或处于活动状态,SSH 连接将失败,您会收到 "UPSTREAM_NOT_FOUND [519]" 错误。要对此问题进行故障排除,请为您的 Lightsail 实例配置会话管理器(AWS Systems Manager 的一项功能)。然后,在没有 SSH 服务的情况下访问实例以解决问题。

完成以下步骤:

  1. 查看以下 SSH 身份验证日志文件之一,检查错误消息或失败的身份验证尝试:
    Ubuntu 日志文件:
    /var/log/auth.log
    Amazon Linux 日志文件:
    /var/log/secure

  2. 如果文件显示错误消息,则执行以下操作之一:
    对于 "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
  3. 如果没有错误消息,则运行以下命令来测试并重新启动 SSH 配置:

    sudo sshd -t
    sudo systemctl restart sshd

恢复 Lightsail 系统密钥

如果 /etc**/ssh/lightsail_instance_ca.pub** 密钥缺失,请完成以下步骤:

  1. 如果您可以通过终端或 PuTTY 进行 SSH 访问,请运行以下命令来验证 ssh-rsa 密钥:

    sudo cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa
  2. 执行以下操作之一:
    如果密钥存在,则运行以下命令将其恢复:

    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,请完成以下步骤:

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

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

  3. 将 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-rsa

    Ubuntu 22.04:
    运行以下命令,将 CASignatureAlgorithmsPubkeyAcceptedAlgorithms 参数行同时添加到 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
  4. 运行以下命令验证 sshd 配置文件内容:

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

    sudo systemctl restart sshd  
    

相关信息

什么是 Amazon Lightsail?

连接并管理您的 Lightsail 实例

AWS 官方已更新 9 个月前