我把root可以ssh免密码登陆了,但是普通用户居然不成功,怎么都要密码登陆。既然root可以,说明我的方法对的,目录权限也是对的。出什么问题了呢?
2条回答 默认 最新
檀越@新空间 2026-01-12 15:59关注下午好🌅🌅🌅
本答案参考通义千问你提到 root 用户可以通过 SSH 免密码登录,但 普通用户却仍然需要密码登录。这说明你的配置可能没有正确应用到普通用户,或者存在一些权限或配置问题。
✅ 问题分析
1. SSH 配置文件(sshd_config)
SSH 的配置文件
/etc/ssh/sshd_config控制了哪些用户可以免密码登录。如果你只配置了PermitRootLogin为yes或without-password,但没有对普通用户进行相应的配置,那么普通用户仍需密码。2. 公钥认证配置
你可能已经将公钥添加到了普通用户的
~/.ssh/authorized_keys文件中,但可能由于以下原因导致不生效:- 权限设置错误(如
.ssh目录或authorized_keys文件权限不对) - 没有正确设置
PubkeyAuthentication yes - 没有启用
PasswordAuthentication no(虽然不是必须的,但可能影响行为)
3. 用户权限和目录结构
普通用户的
.ssh目录或authorized_keys文件可能没有正确的权限设置,导致 SSH 无法读取。
✅ 解决方案
一、检查并修改 SSH 配置文件
-
打开 SSH 配置文件:
sudo nano /etc/ssh/sshd_config -
确保以下配置项正确:
PermitRootLogin yes # 如果你允许 root 登录 PubkeyAuthentication yes PasswordAuthentication no # 可选,关闭密码登录 -
保存并退出编辑器。
-
重启 SSH 服务使配置生效:
sudo systemctl restart sshd
二、确保普通用户的
.ssh目录和authorized_keys文件权限正确-
检查普通用户的
.ssh目录权限:ls -ld /home/youruser/.ssh应该显示:
drwx------ 2 youruser youruser ... -
检查
authorized_keys文件权限:ls -l /home/youruser/.ssh/authorized_keys应该显示:
-rw------- 1 youruser youruser ... -
如果权限不对,修改权限:
chmod 700 /home/youruser/.ssh chmod 600 /home/youruser/.ssh/authorized_keys
三、确认公钥已正确添加到
authorized_keys-
检查
authorized_keys文件内容:cat /home/youruser/.ssh/authorized_keys -
确保公钥格式正确,每行一个公钥,并且没有多余空格或换行符。
四、检查 SELinux 或 AppArmor 是否限制了访问
如果你的系统启用了 SELinux 或 AppArmor,它们可能会阻止 SSH 访问某些文件。
-
检查 SELinux 状态:
sudo sestatus -
如果 SELinux 是
enforcing模式,尝试临时切换为permissive模式测试:sudo setenforce 0 -
如果问题解决,说明 SELinux 阻止了访问,你需要调整策略或禁用它(不推荐生产环境)。
五、使用
ssh -v查看详细日志你可以通过增加
-v参数查看 SSH 连接时的详细日志,帮助定位问题:ssh -v youruser@yourserver在输出中查找类似以下信息:
debug1: Trying private key: /home/youruser/.ssh/id_rsadebug1: Authentication succeeded (publickey)
如果看不到这些信息,说明公钥认证未被正确识别。
✅ 总结
| 问题 | 解决方案 | |------|----------| | SSH 配置未对普通用户生效 | 修改
/etc/ssh/sshd_config,确保PubkeyAuthentication yes| | 权限设置错误 | 修正.ssh和authorized_keys的权限 | | 公钥未正确添加 | 检查并确保公钥正确写入authorized_keys| | SELinux/AppArmor 限制 | 暂时关闭或调整策略 | | 日志排查 | 使用ssh -v查看连接过程 |
✅ 示例:修改后的
/etc/ssh/sshd_config片段# Allow public key authentication PubkeyAuthentication yes # Disable password login (optional) PasswordAuthentication no # Permit root login with key (if needed) PermitRootLogin yes # Other settings...
如果你能提供具体的错误信息或日志内容,我可以进一步帮你诊断问题。
解决 无用评论 打赏 举报- 权限设置错误(如