Appearance
SSH 权限问题排查清单:.ssh、私钥、公钥和目录权限该怎么配
SSH 登录失败时,权限问题是最常见的原因之一。尤其是服务端开启了严格权限检查后,只要某个关键文件权限不对,就可能直接拒绝登录。
先说最常见的正确权限
客户端本地常见权限
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub含义:
~/.ssh:当前用户可读写执行- 私钥文件:只允许当前用户读写
- 公钥文件:可以适当更宽松,一般
644即可
服务端常见权限
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys这通常是最稳妥的配置。
一个需要修正的常见误区
原始笔记里提到“上级目录也应该是 700”,这个说法不一定要这么绝对。
更准确的理解是:
~/.ssh必须足够安全- 私钥和
authorized_keys必须足够安全 - 用户 home 目录不一定必须是
700 - 但 home 目录如果对其他用户可写,就容易触发 SSH 的安全拒绝
所以更实用的排查重点是:
.ssh目录权限是否过宽authorized_keys是否可被其他用户写入- 私钥文件是否暴露
典型排查顺序
如果 SSH 登录失败,可以按这个顺序看:
1. 先看目录权限
bash
ls -ld ~/.ssh2. 看关键文件权限
bash
ls -l ~/.ssh重点关注:
authorized_keysid_rsaid_ed25519
3. 修权限
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub4. 看属主是否正确
bash
chown -R $USER:$USER ~/.ssh如果属主不对,权限正确也可能没用。
服务端还要看什么
如果你已经确认权限没问题,但还是登录失败,还要继续看:
sshd_config里是否禁用了密钥登录AuthorizedKeysFile配置是否改过- 日志里是否提示权限或认证失败
例如:
bash
sudo tail -f /var/log/auth.log很多时候,日志会直接告诉你是:
- 权限不对
- 文件不存在
- 公钥没匹配上
- 登录方式被禁用
一句话总结
SSH 权限问题最实用的排查重点只有三个:
.ssh目录够不够安全- 私钥和
authorized_keys权限对不对 - 文件属主和服务端配置有没有问题
先把这三项查清楚,绝大多数 SSH 权限问题都能定位到。