1

这个问题以前有答案,但那是针对windows的。但是现在我在linux中。

我搞砸了很多。请帮我解决这个问题。

我使用命令创建了 ssh 对,ssh-keygen然后我复制并粘贴id_rsa.pubvminstace SSH Keys然后保存。我发出了下面的命令,但那不会

gcloud compute --project "project001" ssh --zone "europe-west1-b" "instance-3"

上面的命令创建了两个文件google_compute_enginegoogle_compute_engine.pub然后错误是:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
4

3 回答 3

3

您已将 SSH 公钥 (id_rsa.pub) 添加到实例元数据,并且 gcloud 命令已将另一个公钥 (google_compute_engine.pub) 添加到项目元数据。

但是,实例元数据会覆盖项目元数据,因此您尝试使用未经授权的密钥进行 SSH。

因此,我为您的案例提出了四种不同的解决方案:

1- 使用标准 SSH 客户端:

ssh -i $HOME/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no EXTERNAL_IP_ADDRESS

2- 使用 gcloud 命令将 google_compute_engine.pub 密钥添加到实例元数据和 SSH 到实例中。

3- 从实例元数据中删除 SSH 密钥,然后通过 SSH 进入运行 gcloud 命令的实例。

4-来自浏览器的 SSH

我希望这有帮助。

于 2014-12-19T15:45:25.977 回答
1

从 Web 登录到 SSH 终端,编辑 sshd_config 使密码认证为 yes 保存文件并重新启动 SSH,然后使用任何 SSH 客户端从您的电脑登录...

于 2014-12-03T15:27:16.020 回答
0

一点背景知识:Google Compute Engine 在每个项目的元数据中维护一个公钥列表。您可以通过转到https://console.developers.google.com并导航到

Compute > Compute Engine > Metadata > SSH KEYS.

此外,GCE 会尝试确保您的每个 VM 在其 ~/.ssh/authorized_keys 文件中显示这些密钥。

gcloud ssh当您调用并且密钥对 google_compute_engine, google_compute_engine.pub 不存在时,gcloud 将尝试创建并注册一个新密钥。

看来,通过手动编辑您的 authorized_keys 文件,此过程不同步。

要回到已知良好状态,请转到https://console.developers.google.com,导航到

  Compute > Compute Engine > VM instances

然后单击您的实例的 Connect 列下的 SSH。这会将 SSH 作为浏览器插件启动,并具有重新同步您的 authorized_keys 文件的副作用。之后,您应该能够像往常一样使用 ssh 进入您的实例gcloud compute ssh

顺便说一句,通常可以将其他 ssh 密钥与 GCE 虚拟机一起使用,但您应该通过将密钥添加到项目元数据并让 GCE 为您处理传播来做到这一点。

于 2014-12-02T16:33:24.530 回答