排错

SSH 还在要密码?6 个原因与修法

你加了 SSH 密钥但它还要密码——服务器在拒绝密钥。六个原因(权限、用户错、没递密钥、sshd 配置、SELinux、没装)以及怎么找出是哪个。

CC Chen Chen· 创始人·2026 年 6 月 14 日·阅读 5 分钟

为什么 SSH 还在要密码

你配了密钥,但 SSH 一直要密码——意味着服务器没接受你的密钥、退回到了密码认证。原因几乎总是六个之一:公钥不在 authorized_keys、文件或目录权限太开放、用错了用户名、客户端没递这把密钥、sshd 关了密钥认证、或 SELinux 标错了文件上下文。下面教你按"最快先查"找出是哪个。

六个原因

#原因检查
1密钥不在 authorized_keys真的复制到这个用户了吗?
2权限太开放(最常见)~/.ssh 700、authorized_keys 600、家目录非组可写
3用户名错密钥按用户分——装在你登录的那个用户下了吗?
4客户端没递密钥ssh -v 显示 "Offering public key…" 吗?
5sshd 不允许密钥认证sshd_config 里 PubkeyAuthentication yes?
6SELinux 上下文错RHEL/Fedora:restorecon -R ~/.ssh

让服务器告诉你

最快的诊断是连接时看服务器的认证日志。从一个能用的会话(或控制台):

sudo tail -f /var/log/auth.log    # Debian/Ubuntu
sudo journalctl -u ssh -f         # systemd

它会明说原因——Authentication refused: bad ownership or modes for file …(就是原因 #2),或 user not allowed 等。客户端侧,ssh -v user@host 显示你的密钥到底有没有被递出(原因 #4)。

头号修法:权限

authorized_keys 太可读时 OpenSSH 会默默忽略。在服务器上,对登录用户:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh

也确认你的家目录不是组/全员可写(chmod g-w,o-w ~)。"密钥装了还要密码"的大多数情况都是这个原因。客户端侧对应的镜像问题——你的私钥太开放——是 UNPROTECTED PRIVATE KEY FILE

其它修法

  • 密钥没装 / 用户错——用 ssh-copy-id 重新复制到对的账号。给 root 装了不等于能用 ubuntu 登录。
  • 客户端没递——指向对的密钥:ssh -i ~/.ssh/mykey user@host,或见 指定密钥
  • sshd 关了——在 /etc/ssh/sshd_configPubkeyAuthentication yes,然后 sudo systemctl restart ssh

在手机上

这事在移动端的痛点是读冗长日志、把它和原因对上。只要你对那台机器还有任何能用的会话,选中 auth.log 那行问助手——TermAI 的 AI 读它,告诉你是权限问题还是缺密钥还是配置问题,并给确切命令。而且因为 TermAI 把密钥存在设备 Keychain 并替你部署,客户端侧的原因(递错密钥、私钥权限不对)压根不会发生。

TermAI 的 AI 解释为什么 SSH 密钥被拒
选中 auth.log 那行问 AI:它分清是权限问题还是缺密钥,并给出确切修复。

常见问题

加了密钥后 SSH 为什么还要密码?
服务器没接受密钥、退回密码。多半是 ~/.ssh(700)或 authorized_keys(600)权限太开放、密钥在错的用户下、或根本没加。查 /var/log/auth.log

怎么确认密钥被递出了?
ssh -v user@host——找 "Offering public key"。没有的话用 -i 指向密钥。

它说 "bad ownership or modes" 怎么办?
那是权限原因:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys,并确认家目录非组可写。

会不会是服务器关了密钥认证?
会——查 /etc/ssh/sshd_configPubkeyAuthentication yes 并重启 sshd。

快速事实

  • 含义:服务器拒了你的密钥、退回密码
  • 头号原因:权限——~/.ssh 700、authorized_keys 600、家目录非组可写
  • 诊断:服务器 /var/log/auth.log,客户端 ssh -v
  • 还有:用户错、没递密钥、PubkeyAuthentication no、SELinux 上下文
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog