我不确定这是否是与 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
,.ssh
则authorized_keys
必须属于username
。否则,sshd 将无法读取它们,因此无法判断用户是否有权登录。
修复权限转到您的主目录并运行以下命令:
cd ~
chown -R username:username .ssh
之后你应该设置权限:
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
您可以使用命令检查结果ls -la