这个问题之前有答案,但是对于Windows来说。但现在我在linux。
我搞砸了很多。请帮我解决这个问题。
我使用ssh-keygen
命令创建了ssh对,然后我将id_rsa.pub
复制并粘贴到vminstace
SSH Keys
中,然后保存。我发出了下面的命令,但那不是
gcloud compute --project "project001" ssh --zone "europe-west1-b" "instance-3"
上面的命令会创建两个文件google_compute_engine
和google_compute_engine.pub
然后错误是:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
答案 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命令的实例中。
我希望这会有所帮助。
答案 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为你处理传播来实现这一点。