Hetzner Cloud服务器SSH连接权限莫名丢失问题求助
解决Hetzner Cloud SSH公钥登录权限被拒的排查步骤
以下是针对「初始SSH登录正常,几天后突然出现Permission denied (publickey)」问题的排查和解决方法:
确认服务器IP未变更
登录Hetzner Cloud控制台,检查服务器当前的公网IP是否和你使用的MY_IP一致。部分情况下IP可能因平台调整或服务器重置发生变化,替换正确IP后重试。检查本地密钥文件权限
SSH对密钥文件权限要求严格,即使你未主动修改,系统操作也可能意外改动权限:- 查看私钥权限:
ls -l ~/.ssh/id_rsa,正常权限应为-rw-------(即600) - 查看
.ssh目录权限:ls -ld ~/.ssh,正常权限应为drwx------(即700) - 权限错误时执行修正命令:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa
- 查看私钥权限:
验证服务器端authorized_keys配置
通过Hetzner控制台的VNC功能登录服务器,检查以下内容:- 查看
/root/.ssh/authorized_keys文件,确认其中包含你本地公钥(~/.ssh/id_rsa.pub)的完整内容,无多余换行或字符 - 检查文件及目录权限:
ls -l /root/.ssh/authorized_keys # 权限应为-rw-------(600) ls -ld /root/.ssh # 权限应为drwx------(700) - 权限错误时执行修正命令:
chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys - 如果公钥丢失,将本地公钥内容重新粘贴到
authorized_keys文件中
- 查看
检查SSH服务配置
系统更新可能导致sshd配置变更,登录VNC后检查/etc/ssh/sshd_config的关键参数:- 确保
PubkeyAuthentication yes(开启公钥认证) - 确保
PermitRootLogin yes或PermitRootLogin without-password(允许root用户通过公钥登录) - 修改配置后重启SSH服务:
systemctl restart sshd
- 确保
排查防火墙/安全组规则
- 登录Hetzner Cloud控制台,检查Cloud Firewall规则,确认允许22端口的入站流量
- 服务器本地防火墙(如ufw、iptables)检查:
- ufw:执行
ufw status,确认22/tcp规则为ALLOW - iptables:执行
iptables -L -n,确认存在ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22类的规则
- ufw:执行
重置本地known_hosts记录
若服务器主机密钥变更(如IP被重新分配、服务器重装),本地known_hosts会标记该IP为不安全:
执行命令移除旧记录:ssh-keygen -R MY_IP,之后重新尝试登录,按提示确认新主机密钥即可
内容的提问来源于stack exchange,提问作者Mista K.
相关产品推荐
相关产品推荐

