DigitalOcean Droplet SSH登录遇Permission denied (publickey)错误求助
解决SSH登录DigitalOcean Droplet时
Permission denied (publickey)的问题 嘿,我之前帮不少开发者搞定过DigitalOcean上的SSH公钥登录问题,你遇到的这个Permission denied (publickey)确实挺头疼的,咱们一步步来排查解决:
第一步:先把本地密钥的基础问题捋顺
首先得确保你本地的SSH密钥文件没问题,权限也符合要求:
- 先查看
~/.ssh目录下的文件:
确认存在ls -la ~/.ssh/id_rsa(私钥)和id_rsa.pub(公钥),如果是新生成的密钥,要注意文件名是否和你操作的一致。 - 修正密钥文件的权限(这是很多人忽略的点,SSH对权限要求很严格):
chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub - 确保
ssh-agent正常运行并加载了你的密钥:
先启动agent:
然后添加密钥:eval "$(ssh-agent -s)"
最后用ssh-add ~/.ssh/id_rsassh-add -l查看已加载的密钥列表,确认你的密钥指纹在里面。
第二步:通过DigitalOcean控制台直接配置服务器公钥
既然你没法通过SSH命令复制公钥,那就换个更直接的方式——用DigitalOcean的网页控制台操作:
- 登录DigitalOcean控制面板,找到你的目标Droplet,切换到Access标签页,点击Launch Droplet Console,直接进入服务器的命令行界面。
- 在服务器控制台里,先确保
.ssh目录和authorized_keys文件的权限正确:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys - 打开
authorized_keys文件,把你本地id_rsa.pub里的完整内容复制粘贴进去,注意不要有多余的换行、空格或者截断。保存文件后退出控制台。
第三步:排查其他潜在问题
如果上面两步做完还是不行,再检查这几个点:
- 确认Droplet的防火墙设置:去DigitalOcean的Cloud Firewall页面,检查是否允许**入站的22端口(SSH)**流量,要是防火墙把22端口封了,肯定登不上。
- 检查服务器的SSH配置文件:在控制台里打开
/etc/ssh/sshd_config,确认以下关键配置:
修改完记得重启SSH服务:PubkeyAuthentication yes PermitRootLogin yes # 如果你是用root登录的话,必须开这个;如果用普通用户,要对应调整 # 要是你之前关了密码登录,暂时可以把下面这行改成yes,测试成功后再改回去 PasswordAuthentication no# Ubuntu/Debian系统 systemctl restart sshd # CentOS/RHEL系统 systemctl restart ssh - 确认域名解析:执行
ping 360productions.com,看看返回的IP是不是你Droplet的公网IP,要是解析错了,自然连不上目标服务器。
做完这些,再试试ssh root@360productions.com,应该就能正常登录了。
内容的提问来源于stack exchange,提问作者brent_white
相关产品推荐
相关产品推荐

