Ubuntu服务器RSA密钥SSH认证失败求助:权限拒绝问题
解决Ubuntu 16.04.3 SSH RSA密钥认证权限拒绝问题
我来帮你搞定这个折腾了4-5小时的问题!你遇到的/.ssh/authorized_keys: Permission denied错误,其实很多时候是容易忽略的细节导致的,咱们一步步来排查:
1. 先确认authorized_keys的路径是否正确
你报错里写的是/.ssh/authorized_keys——这是根目录下的文件,而SSH默认读取的是当前登录用户家目录下的~/.ssh/authorized_keys(比如/home/你的用户名/.ssh/authorized_keys)。
- 先检查家目录下的密钥文件是否存在:
ls -l ~/.ssh/authorized_keys - 如果根目录下误创建了
.ssh文件夹,直接删掉它:sudo rm -rf /.ssh
2. 检查用户家目录的权限
SSH对用户家目录的权限要求很严格,不能太开放(比如777),否则会拒绝密钥认证。
- 查看家目录权限:
ls -ld ~/ - 如果权限不是
755或700,修改它:chmod 755 ~/
3. 确认.ssh文件夹和authorized_keys的所有者
这是另一个高频坑:如果.ssh或authorized_keys的所有者是root,而非你登录的用户,SSH会直接拒绝读取。
- 查看所有者信息:
ls -l ~/.ssh/ - 如果所有者不是你的用户名,修改它:
(把chown -R 你的用户名:你的用户名 ~/.ssh/你的用户名替换成实际的登录用户名,比如ubuntu)
4. 检查SSH服务器配置是否允许密钥认证
有时候重装系统后,SSH配置可能默认关闭了公钥认证:
- 打开SSH配置文件:
sudo nano /etc/ssh/sshd_config - 找到并确保以下配置项是开启的:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 # 暂时保留PasswordAuthentication yes,等配置成功后再改成no,方便调试 PasswordAuthentication yes - 重启SSH服务生效:
sudo systemctl restart sshd
5. 验证Puttygen生成的公钥格式
确保你粘贴到authorized_keys里的是完整的公钥内容:
- 格式必须是一行到底:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...(完整长字符串)... 你的注释 - 不要把公钥拆成多行,也不要有多余的空行(除非你要添加多个密钥)
6. 用verbose模式获取更详细的错误信息
如果以上步骤都试过还是不行,用Putty的日志功能或者命令行的verbose模式看具体错误:
- Putty里:左侧导航到
Connection > SSH > Logging,选择Log all session output,连接后查看日志里的权限细节 - 命令行(如果有其他Linux机器):
输出里会明确告诉你是哪个文件的权限或路径出了问题ssh -v 你的用户名@服务器IP
按照这些步骤排查下来,应该能解决你的问题——毕竟你已经设置了.ssh和authorized_keys的权限,大概率是路径、所有者或家目录权限的问题。
内容的提问来源于stack exchange,提问作者FredS
相关产品推荐
相关产品推荐

