You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH密钥连接Docker容器遇Permission denied (publickey)问题求助

解决Docker容器SSH密钥认证失败的问题

1. 修正文件与目录权限

SSH对权限要求极为严格,这是密钥认证失败的最常见原因:

  • /root/.ssh目录权限必须设为700,禁止其他用户拥有读写权限
  • authorized_keys文件权限必须设为600,同样不能放开权限

在容器内执行以下命令修改:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

2. 补全sshd_config关键配置

除了你已设置的选项,必须确保以下配置生效:

  • PubkeyAuthentication yes:开启公钥认证(部分镜像默认注释或关闭)
  • AuthorizedKeysFile .ssh/authorized_keys:确认公钥文件路径配置正确

修改后重启sshd服务(根据基础镜像不同,命令可能是service ssh restart或/etc/init.d/ssh restart)

3. 处理root用户密码状态

你开启密码登录后仍无法登录,可能是root用户未设置空密码。在容器内执行:

passwd -d root

清空root密码后重启sshd,先验证密码登录是否正常,再回到密钥认证排查。

4. 查看sshd日志定位错误

直接查看日志能精准找到问题:

  • 查看容器内日志文件(如/var/log/auth.log,不同镜像路径可能不同)
  • 或通过docker logs <容器名>查看输出(若sshd为前台运行)

日志会明确提示是权限问题、密钥不匹配还是配置错误。

5. 校验公钥内容一致性

确保本地id_rsa.pub的内容与容器内/root/.ssh/authorized_keys完全一致,无换行错误、多余空格或字符缺失。可分别在本地和容器内执行cat命令对比内容。

6. 确认容器网络与IP

用docker inspect <容器名>查看容器实际IP,确保你连接的172.17.0.2是目标容器的正确地址,避免连错容器。

内容的提问来源于stack exchange,提问作者Corentin Salomon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:45:38