Debian SSH 登录被拒/要密码登录?
Debian 上 SSH 登录被拒、或配了密钥仍要求密码。按服务端配置( PermitRootLogin / PasswordAuthentication / AllowUsers )、密钥权限、客户端命令三层排查,定位是被配置挡了还是密钥没匹配上。
简短答案
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 索引 侧一致。
操作小结
- 查 sshd_config 的登录相关项,确认可登录路径。
- 核对 authorized_keys 是否装好、权限 700/600。
- 客户端
-i显式带私钥 +-v看握手。 - 改配置先留可用会话,再 reload 验证。