GCP 元数据传输到 SSH 密钥-权限被拒绝

GCP 元数据传输到 SSH 密钥-权限被拒绝

我不确定这是否是与 Debian 版本相关的问题,因为我在旧的 debianv8 中没有遇到这个问题。

我正在尝试在 Debian9 中向我的实例添加一个新的 ssh 密钥(我有一个用户正在使用它),并且我按照 GCP 文档进行了操作https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#block-project-keys我尝试使用实例中的 SSH 密钥元数据和/或 SSH 密钥,但错误是一样的,我无法在实例中登录“权限被拒绝(公钥)”。

我所看到的是,GCP 控制台没有在 ~/.ssh/authorized_keys 文件中添加公钥,我尝试手动添加它,但仍然不起作用,从我的配置文件中我看到 ssh 守护程序没有从这里读取数据,但我不知道从哪里获取 ssh 密钥。

这是我的 ssh 配置文件

#   $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

还有其他人遇到同样的问题吗?我也尝试使用我的 GCP 帐户从 SSH Web 版本登录,但遇到了类似的错误。

将元数据传输到虚拟机失败

答案1

有几件事可以检查 SSH 失败的原因,例如:

如果实例已启用 OS 登录,则不允许使用基于元数据的 SSH 密钥进行连接。

如果您使用第三方工具通过 SSH 访问,请确保您正确使用私钥并且将公钥添加到实例元数据中。

要解决此问题,请参阅此文档[1]。

要验证您的密钥并使用高级方法进行连接,请遵循此文档[2]。


[1]https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh

[2]https://cloud.google.com/compute/docs/instances/connecting-advanced

答案2

正如@约翰·汉利在评论部分,此类问题可能与权限和所有权有关。例如,如果您想以 身份登录username.sshauthorized_keys必须属于username。否则,sshd 将无法读取它们,因此无法判断用户是否有权登录。

修复权限转到您的主目录并运行以下命令:

    cd ~
    chown -R username:username .ssh

之后你应该设置权限:

    chmod 700 .ssh
    chmod 600 .ssh/authorized_keys

您可以使用命令检查结果ls -la

相关内容