树莓派5 ssh Permission denied (publickey).
时间: 2025-03-16 19:13:39 浏览: 33
### 树莓派5 SSH Permission denied (publickey) 的解决方案
当尝试通过 SSH 使用公钥认证连接到树莓派5时,如果收到 `Permission denied (publickey)` 错误,则表明客户端未能成功完成基于公钥的身份验证。以下是针对此问题的具体分析和解决方法:
#### 1. 检查公钥是否已正确添加至远程服务器
确认本地计算机上的私钥对应的公钥已经上传到了树莓派的 `.ssh/authorized_keys` 文件中。如果没有执行这一步操作,那么即使其他设置都正常,仍然会触发该错误[^1]。
可以通过以下命令将当前用户的公钥追加到目标主机上:
```bash
cat ~/.ssh/id_rsa.pub | ssh pi@raspberrypi "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
```
#### 2. 验证 .ssh 和 authorized_keys 权限设置
确保树莓派上的 `.ssh` 目录及其子文件具有正确的权限。具体来说:
- `.ssh` 目录应仅允许所属用户访问 (`chmod 700 ~/.ssh`)
- `authorized_keys` 文件也需限制为只读模式给拥有者 (`chmod 600 ~/.ssh/authorized_keys`)
不恰当的目录或文件权限可能会阻止 SSH 守护进程读取这些密钥材料从而拒绝连接请求^.
#### 3. 修改SSH服务配置以支持密码登录(可选)
作为临时措施,在排查期间可以启用密码身份验证来测试连通性。编辑 `/etc/ssh/sshd_config` 文件并将其中的参数调整如下所示:
```conf
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
```
保存更改之后记得重新启动 SSHD 服务以便应用新的设定:
```bash
sudo systemctl restart sshd
```
注意这种方法仅仅用于诊断目的;生产环境中建议禁用明文密码机制而依赖更强的安全手段比如双因素认证或者硬件令牌等附加保护层[^4].
#### 4. 测试与验证
完成上述修正动作后再次发起 SSH 请求看看问题是否存在改善迹象。如果一切顺利的话应该能够无阻碍地建立加密通道并与远端设备交互数据流了。
---
### 总结
通过对以上几个方面的逐一核查——即核实公钥的存在状态、校正相关路径下的存取控制属性以及必要时候放宽部分策略约束条件——通常都能够有效化解因缺乏适当授权而导致被拒入内的状况发生][^[^23]。
```python
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect('raspberrypi', username='pi', key_filename='/path/to/private/key')
except Exception as e:
print(f'Connection failed: {e}')
finally:
client.close()
```
阅读全文
相关推荐



















