在Docker部署的Jenkins中配置SSH密钥遇权限问题求助
解决Docker Jenkins中SSH密钥权限问题的步骤
核心原因
你看到的权限错误是Docker容器内部的Linux环境报的,并非Windows本地权限问题。即便在Windows上修改了文件权限,复制到容器后,权限会被Docker的文件挂载规则重置为0755,导致SSH拒绝使用该密钥。
具体解决方法
方法1:进入容器内直接修改权限
- 打开Windows命令提示符或PowerShell,执行命令进入Jenkins容器:
docker exec -it <你的Jenkins容器名/容器ID> /bin/bash - 切换到密钥所在目录:
cd /root/.ssh - 修改
id_rsa文件权限为700(仅root可读可写可执行):chmod 700 id_rsa - 同时确保
.ssh目录权限合规:chmod 700 /root/.ssh - 退出容器:
exit
方法2:挂载文件时指定权限(推荐)
如果是通过挂载Windows本地的id_rsa到容器内,可在启动容器时直接指定文件权限,避免后续手动修改:
- 使用
docker run命令:docker run -d ... --mount type=bind,source=C:/path/to/your/local/id_rsa,target=/root/.ssh/id_rsa,readonly,mode=0700 ... jenkins/jenkins:lts - 使用
docker-compose.yml配置:volumes: - C:/path/to/your/local/id_rsa:/root/.ssh/id_rsa:ro,mode=0700
方法3:在Jenkins构建步骤中前置权限修改
若不想手动操作容器,可在Jenkins的Shell构建步骤里先修改权限,再执行SSH命令:
chmod 700 /root/.ssh/id_rsa && ssh username@123.456.789.01
注意事项
- Linux与Windows权限模型完全不同,不要试图通过Windows本地修改权限解决容器内的问题,复制到容器后权限会被重置。
- 密钥文件
id_rsa必须保证仅属主有读写权限,目录.ssh也需设置为仅属主可访问,否则SSH会拒绝加载密钥。
内容的提问来源于stack exchange,提问作者volume one
相关产品推荐
相关产品推荐

