GCP TPU ssh 问题

问题描述

我正在研究在 Google 云上创建的 TPU。今天晚上,当我尝试 ssh 进入我的 TPU 机器时,出现以下错误

XXX@ip-address: Permission denied (publickey).
retrying: SSH command error: [/usr/bin/ssh] exited with return code [255]

我从 ~/.ssh/ 文件夹中删除了密钥并重新运行了 SSH 命令。它在 .ssh 文件夹中生成公钥和私钥,我在 GCP => VM => 元数据中复制了公钥。

解决方法

我已在我的测试环境中复制了您的问题。我可以使用 Cloud TPU 虚拟机创建 TPU VM,并使用 Cloud Shell 中的 gcloud 命令成功登录到 SSH。

发生此错误的原因有多种。以下是导致此错误的两个最常见原因:

  1. 如果您使用元数据中存储的 SSH 密钥连接到启用了操作系统登录的虚拟机。

    如果您的项目启用了 OS Login,则您的 VM 不接受存储在元数据中的 SSH 密钥。要解决此问题,您可以尝试以下方法之一:

    1. 使用 Google Cloud Console 或 gcloud 命令行工具连接到您的虚拟机。

    2. 将您的 SSH 密钥添加到操作系统登录。有关详细信息,请参阅 Adding SSH keys to a user account

    3. 禁用操作系统登录。有关详细信息,请参阅 Disabling OS Login

  2. 允许 SSH 的防火墙规则缺失或配置错误。

    默认情况下,Compute Engine 虚拟机允许在端口 22 上进行 SSH 访问。如果 default-allow-ssh 规则缺失或配置错误,您将无法连接到虚拟机。 要解决此问题,请检查您的 firewall rules 并重新添加或重新配置 default-allow-ssh

有关 SSH 故障排除的详细信息,请参阅此 link