无法通过 ssh 连接到 GCE:“权限被拒绝(公钥)”

无法通过 ssh 连接到 GCE:“权限被拒绝(公钥)”

我在 Google Compute Engine 中通过 Bitnami 创建了一个虚拟机。以前,我可以通过 Bitnami Web 界面进行 ssh。我尝试通过 Mac 上的终端进行 ssh,但一直出现错误Permission denied (publickey)。然后我删除了服务器和 Mac 上的所有密钥,并从 bitnami 下载了 pem 文件并使用-i选项进行连接,但问题仍然存在。

ssh -i bitnami-gce.pem [email protected] -v

完整的调试信息:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 1xx.1xx.5x.1xx [1xx.1xx.5x.1xx] port 22.
debug1: Connection established.
debug1: identity file bitnami-gce.pem type -1
debug1: identity file bitnami-gce.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Debian-4~bpo70+1
debug1: match: OpenSSH_6.6.1p1 Debian-4~bpo70+1 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA <RSA KEY>
debug1: Host '1xx.1xx.5x.1xx' is known and matches the RSA host key.
debug1: Found key in /Users/xxx/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: bitnami-gce.pem
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

我无法通过 ssh 连接到主机。因此现在无法向服务器发送任何密钥。如何解决此问题?

编辑:我尝试通过 Google Web 控制台进行 ssh,并且可以做到。有人能告诉我从任何地方进行 ssh 的确切步骤吗?我更喜欢简单的用户名和密码方式,如何以这种方式进行配置?

答案1

当我能够通过 Google 网络控制台 ssh 后,我执行了以下步骤来解决这个问题:

  1. 使用生成 ssh 密钥

    ssh-keygen

  2. 复制 key.pub 文件内容

  3. 将内容附加到~/.ssh/authorized_keys文件

    sudo nano ~/.ssh/authorized_keys

答案2

由于用户的原因,我也遇到了同样的情况。在 google web shh 上,我的用户名显示了我电子邮件的第一部分。因此,我尝试像这样 ssh

ssh <first_part_of_gmail>@google_vm_external_ip

后来我发现,google 会根据您在 google vm 设置中输入的 ssh 密钥创建一个用户。因此,首先检查公钥末尾的用户,然后尝试执行以下操作

ssh <user_name_at_the_end_of_public_key>@google_vm_external_ip

答案3

确保你没有操作系统登录已启用文档读:

如果您使用实例上的 OS Login 管理 SSH 密钥,则这些实例上基于元数据的 SSH 密钥配置将被禁用

警告:在实例上启用 OS Login 会禁用这些实例上基于元数据的 SSH 密钥配置。禁用 OS Login 会恢复您在项目或实例元数据中配置的 SSH 密钥。

要验证,请转到项目级元数据(Compute Engine -> 元数据),并确保您没有enable-oslogin密钥或已将其设置为FALSE

答案4

我遇到了同样的问题,第一次使用 gcloud 命令登录并添加到/etc/ssh/sshd_config

PubkeyAcceptedKeyTypes  +ssh-dss

重新启动服务后:

systemctl restart sshd

相关内容