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

Putty环境下SSH公钥配置与无密码登录异常问题求助

Putty环境下SSH公钥配置与无密码登录异常问题求助

看起来你遇到的这几个SSH免密登录的问题确实有点绕,咱们一步步拆解排查:

先理清第一个矛盾:root ssh userTest能免密,但userTest的authorized_keys里没对应公钥?

其实这里你大概率搞混了密钥的验证方向——当你从root账户执行ssh userTest@ip_address时,用的是root账户的私钥去和userTest的SSH服务做验证,所以能免密的原因应该是:/home/userTest/.ssh/authorized_keys里添加了root账户的公钥(或者你本地用来登录root的那个公钥),而不是userTest自己的公钥。你可以登录userTest后执行下面的命令确认:

cat ~/.ssh/authorized_keys

应该能找到你之前配置的那个公钥。

为什么root不能免密登录?

你的root账户~/.ssh/authorized_keys里有公钥但还是需要密码,90%是权限配置不符合SSH的严格要求,你需要确保:

  • root的~/.ssh目录权限为700(只有所有者能读写执行):
    chmod 700 /root/.ssh
    
  • authorized_keys文件权限为600(只有所有者能读写):
    chmod 600 /root/.ssh/authorized_keys
    
  • 这两个文件/目录的所有者必须是root:
    chown -R root:root /root/.ssh
    

另外还要检查sshd_config的核心配置:

  1. 打开配置文件:vim /etc/ssh/sshd_config
  2. 确认以下选项:
    • PubkeyAuthentication yes(开启公钥认证)
    • PermitRootLogin yes 或者 PermitRootLogin prohibit-password(后者仅允许公钥登录root)
    • 如果你还没完全确认公钥可用,先不要把PasswordAuthentication设为no
  3. 修改后重启SSH服务:
    systemctl restart sshd  # 适用于systemd系统,比如Ubuntu 16.04+/CentOS 7+
    # 或者用 service ssh restart (适用于老版本系统)
    

为什么userTest用Putty连接需要密码?

Putty不直接支持OpenSSH默认的id_rsa/id_dsa格式密钥,需要转换成Putty专用的.ppk格式,步骤如下:

  1. 打开Puttygen工具(和Putty一起安装的配套工具)
  2. 点击左上角的「Load」,选择你的OpenSSH私钥文件(注意要在文件类型里选「All Files」才能看到)
  3. 点击「Save private key」,保存成.ppk格式的文件(可以设置密码保护,也可以跳过)
  4. 打开Putty,在左侧菜单找到「Connection -> SSH -> Auth」,点击「Browse」选择刚才保存的.ppk文件
  5. 再尝试连接userTest账户,应该就能免密登录了

另外也要确认userTest的.ssh目录和authorized_keys权限正确(同样是700和600,所有者为userTest),不然即使有正确的私钥也会被SSH服务拒绝。

最后建议的标准化配置步骤(避免混乱)

  • 先搞定root账户的公钥登录:把你本地的公钥添加到/root/.ssh/authorized_keys,设置好权限,测试用Putty或本地SSH登录root免密成功
  • 再配置userTest账户:把你本地的公钥添加到/home/userTest/.ssh/authorized_keys,设置权限,测试免密登录成功
  • 等所有公钥登录都验证正常后,再修改sshd_config禁用密码登录:PasswordAuthentication no,重启SSH服务

备注:内容来源于stack exchange,提问作者jsnjdhs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:13:13