无法通过Linux中的SSH连接到Compute Engine实例

时间:2014-11-27 07:12:59

标签: linux ssh google-compute-engine gcloud

这个问题之前有答案,但是对于Windows来说。但现在我在linux。

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

我使用ssh-keygen命令创建了ssh对,然后我将id_rsa.pub复制并粘贴到vminstace 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).

3 个答案:

答案 0 :(得分: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 from the browser

我希望这会有所帮助。

答案 1 :(得分:1)

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

答案 2 :(得分: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文件的副作用。之后,您应该能够像往常一样使用gcloud compute ssh ssh进入您的实例。

一般情况下,使用GCE VM的其他ssh密钥也没关系,但是你应该通过向项目元数据添加密钥,让GCE为你处理传播来实现这一点。