You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_rsa
    
    最后用ssh-add -l查看已加载的密钥列表,确认你的密钥指纹在里面。

第二步:通过DigitalOcean控制台直接配置服务器公钥

既然你没法通过SSH命令复制公钥,那就换个更直接的方式——用DigitalOcean的网页控制台操作:

  1. 登录DigitalOcean控制面板,找到你的目标Droplet,切换到Access标签页,点击Launch Droplet Console,直接进入服务器的命令行界面。
  2. 在服务器控制台里,先确保.ssh目录和authorized_keys文件的权限正确:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  3. 打开authorized_keys文件,把你本地id_rsa.pub里的完整内容复制粘贴进去,注意不要有多余的换行、空格或者截断。保存文件后退出控制台。

第三步:排查其他潜在问题

如果上面两步做完还是不行,再检查这几个点:

  • 确认Droplet的防火墙设置:去DigitalOcean的Cloud Firewall页面,检查是否允许**入站的22端口(SSH)**流量,要是防火墙把22端口封了,肯定登不上。
  • 检查服务器的SSH配置文件:在控制台里打开/etc/ssh/sshd_config,确认以下关键配置:
    PubkeyAuthentication yes
    PermitRootLogin yes  # 如果你是用root登录的话,必须开这个;如果用普通用户,要对应调整
    # 要是你之前关了密码登录,暂时可以把下面这行改成yes,测试成功后再改回去
    PasswordAuthentication no
    
    修改完记得重启SSH服务:
    # Ubuntu/Debian系统
    systemctl restart sshd
    # CentOS/RHEL系统
    systemctl restart ssh
    
  • 确认域名解析:执行ping 360productions.com,看看返回的IP是不是你Droplet的公网IP,要是解析错了,自然连不上目标服务器。

做完这些,再试试ssh root@360productions.com,应该就能正常登录了。

内容的提问来源于stack exchange,提问作者brent_white

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:39:49