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

Windows环境Docker部署Jenkins启动及SSH报错解决求助

解决Docker部署Jenkins(Ubuntu镜像)的SSH错误与自动启动问题

我来一步步帮你搞定这些问题,先从SSH相关的错误入手,再实现浏览器自动启动的需求:

一、解决"Host key verification failed."与"read_passphrase: can't open /dev/tty"错误

这两个问题本质都是SSH认证在容器环境下的配置问题,结合你已经在Windows Git Bash生成SSH文件的情况,按以下步骤操作:

1. 正确挂载本地SSH文件到Jenkins容器

Jenkins在Ubuntu镜像里默认使用jenkins用户,其SSH配置目录是/var/jenkins_home/.ssh/。启动容器时,把Windows上生成的SSH目录挂载到这个路径:

docker run -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /c/Users/你的用户名/.ssh/:/var/jenkins_home/.ssh/ \
  --name jenkins \
  jenkins/jenkins:lts-jdk11

注意:把/c/Users/你的用户名/.ssh/替换成你实际的Windows SSH路径(Git Bash里的路径格式)

2. 修复SSH文件权限(关键!)

SSH对文件权限要求非常严格,挂载后需要进入容器修正权限:

# 进入Jenkins容器
docker exec -it jenkins bash

# 切换到jenkins用户(默认是root,必须切换)
su jenkins

# 设置目录和文件权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub ~/.ssh/known_hosts

# 退出容器
exit

3. 预添加目标主机的Host Key(避免首次验证)

如果你是让Jenkins连接特定主机,提前把主机的公钥加入known_hosts,避免手动验证:

# 在容器内执行(已切换到jenkins用户)
ssh-keyscan 你的目标主机IP/域名 >> ~/.ssh/known_hosts

4. 解决无终端密码输入问题

"read_passphrase: can't open /dev/tty"是因为Jenkins运行在非交互式环境,无法弹出终端输入密码:

  • 如果你不需要密钥密码:重新生成无密码的SSH密钥(Git Bash里执行):
    ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
    
  • 如果你必须保留密钥密码:安装Jenkins的SSH Agent插件,把密钥添加到Jenkins凭据库,然后在构建任务中用SSH Agent步骤加载密钥,自动处理密码验证。

二、实现Jenkins在浏览器自动启动

要让Jenkins启动后自动在浏览器打开,分两步:

1. 设置Docker容器自动重启

确保Jenkins容器随Docker开机自动启动:

# 对已运行容器执行该命令,或者启动容器时添加--restart=always参数
docker update --restart=always jenkins

2. Windows开机自动打开浏览器访问Jenkins

创建一个Windows批处理脚本(比如start_jenkins.bat),内容如下:

@echo off
start http://localhost:8080

然后把这个脚本放到Windows的启动文件夹:

路径:C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
这样Windows开机后,会自动打开浏览器访问Jenkins的8080端口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:49:21