跳到主要内容
常见问题 DebianSSH密钥远程

Debian SSH 登录被拒/要密码登录?

Debian 上 SSH 登录被拒、或配了密钥仍要求密码。按服务端配置( PermitRootLogin / PasswordAuthentication / AllowUsers )、密钥权限、客户端命令三层排查,定位是被配置挡了还是密钥没匹配上。

发布于 2026/11/11 所属频道 Ubuntu 与 Debian

简短答案

SSH「登录被拒 / 配了密钥还是要密码」,多是服务端配置挡了(PermitRootLogin、PasswordAuthentication、AllowUsers 等)或公钥没匹配上/权限不对。按「服务端配置 → 公钥是否安装 → 权限 → 客户端命令」顺序查,别盲猜。

现象对照

现象 含义
Permission denied (publickey) 公钥没装上,或服务端禁止该用户/密钥登录
配了密钥仍提示输密码 客户端没带对私钥,或 PasswordAuthentication 设置与预期不符
某用户能登、别的不能 AllowUsers/DenyUsers 限制了范围

排查步骤

# 1. 服务端:看 SSH 关键配置
sudo grep -iE 'PermitRootLogin|PasswordAuthentication|PubkeyAuthentication|AllowUsers|DenyUsers' /etc/ssh/sshd_config

# 2. 服务端:看该用户公钥是否装好(authorized_keys)
ls -l ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys

# 3. 看权限(过宽会导致密钥被忽略)
stat -c '%a' ~/.ssh ~/.ssh/authorized_keys

# 4. 客户端:显式带私钥、加 -v 看握手
ssh -i <私钥路径> -v 用户@主机
  • 公钥没装:把客户端公钥追加进目标用户 ~/.ssh/authorized_keys(一步拷过去,别手敲混入)。
  • 权限过宽(~/.ssh 需 700、authorized_keys 需 600):chmod 修正后重试,这是「密钥明明装了却不生效」的高频原因。
  • 配置与预期不符:改 /etc/ssh/sshd_config 后 sudo systemctl reload ssh 再试,改完务必先留着可用连接、别把自己锁门外。

注意:改 sshd 配置前确保自己还有一条可用会话,重载/重启服务要放在确认无误之后,否则容易把自己关在外面。服务端基线见 Debian 13.7.0 DVD-1 条目,总览 Debian 索引;客户端用法与 Ubuntu 索引 侧一致。

操作小结

  1. 查 sshd_config 的登录相关项,确认可登录路径。
  2. 核对 authorized_keys 是否装好、权限 700/600。
  3. 客户端 -i 显式带私钥 + -v 看握手。
  4. 改配置先留可用会话,再 reload 验证。

相关链接

本文内容基于公开资料整理,仅供参考;涉及授权与合规的操作请以厂商官方文档为准。

相关推荐下载

按本文主题匹配的官方原版镜像条目

配套 PE 工具

制作启动盘、备份数据、修复引导

其他常见问题

同一集合内的相近主题,按标签与关键词匹配