连接Google Cloud SSH遇公钥权限拒绝问题求助
我之前也碰到过一模一样的GCP SSH公钥权限拒绝问题,折腾了好一阵才解决,给你几个针对性的排查点,挨个试试:
1. 确认GCP控制台的公钥配置完全正确
先把本地~/.ssh/id_rsa.pub的内容完整复制,然后打开GCP控制台的VM实例详情,进入元数据 > SSH密钥,检查对应的条目:
- 必须包含完整的
ssh-rsa前缀、密钥字符串,以及结尾的username@hostname(比如dev01@your-local-machine),一个字符都不能错,尤其是容易漏复制的末尾邮箱部分。 - 如果之前的条目有问题,删除后重新添加新的公钥。
2. 修正ssh-agent的启动命令
你之前执行的命令有格式错误,导致ssh-agent没正确启动,密钥也没加载进去。正确的操作步骤是:
# 启动ssh-agent eval "$(ssh-agent -s)" # 添加你的私钥 ssh-add ~/.ssh/id_rsa
执行完后用ssh-add -l验证,如果能看到你的RSA密钥指纹,说明密钥已经成功加载。
3. 检查VM实例的sshd配置
如果本地没问题,就通过GCP控制台的浏览器SSH(这个不需要本地密钥)登录到VM,修改sshd配置:
- 编辑配置文件:
sudo nano /etc/ssh/sshd_config - 确保以下配置项是开启的:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 - 重启sshd服务:
sudo systemctl restart sshd
4. 修复VM内用户目录的权限
VM内的用户主目录和.ssh文件夹权限、所有者也必须严格符合要求,否则sshd会拒绝读取密钥:
# 设置主目录权限 sudo chmod 700 /home/dev01 # 设置.ssh文件夹权限 sudo chmod 700 /home/dev01/.ssh # 设置authorized_keys权限 sudo chmod 600 /home/dev01/.ssh/authorized_keys # 确保所有者是dev01用户 sudo chown -R dev01:dev01 /home/dev01/.ssh
5. 用详细日志定位问题
如果以上步骤都没解决,执行更详细的ssh命令获取日志:
ssh -vvv dev01@[你的VM外部IP]
通过-vvv参数能看到每一步的认证细节,比如VM是否接收了你的公钥、是否读取了authorized_keys文件等,方便定位具体问题。
你提供的错误日志:
debug1: Found key in /home/dev01/.ssh/known_hosts:2
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs =
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/dev01/.ssh/id_rsa.pub
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
内容的提问来源于stack exchange,提问作者Leonardo

