我已在 Synology NAS 上为 jenkins 设置了一个 docker-container(名称:jenkins-01)。 我还在同一台 NAS 上设置了 Synology 提供的 git-server。 为了从 jenkins-01 访问 git-repositories,我在 NAS 上创建了一个用户“jenkins”。
我的 NAS 上的 git 服务器可以通过 SSH 访问,我可以从我的桌面计算机访问存储库。
这是我使用的 URL 示例:
ssh://jenkins@<ip>:<port>/volume1/gitrepos/<repo>
使用该 URL,我可以从我的台式机克隆。 我还使用与桌面计算机上的 NAS 上提供的完全相同的 docker-compose.yml 文件设置了一个 docker 容器。在该 jenkins 实例中,我可以使用此处显示的 URL 创建管道,不会出现任何问题。所以基本上我确信 URL 和使用的 SSH 凭证都没有问题。
但是,当我尝试在 NAS 上作为 docker 容器运行的 jenkins 实例中执行相同的操作时,我无法使用 URL 连接到同一 git 服务器。提供的消息是 URL 无效。我还尝试用 jenkins-instance 中配置的 gateway-ip 替换 。
为了找出网关 IP,我在 NAS 上使用了以下命令:
docker container inspect jenkins-01
这是我使用的 docker-compose.yml:
version : "3"
services:
app:
image: jenkins/jenkins:lts-jdk11
container_name: jenkins-01
privileged: true
user: root
networks:
vlan_devnet:
ipv4_address: 172.18.100.2
ports:
- 51080:8080
- 51000:50000
volumes:
- ./jenkins_home:/var/jenkins_home
- ./etc/resolv.conf:/etc/resolv.conf
environment:
JAVA_OPTS: -Duser.timezone=CET
restart: unless-stopped
networks:
vlan_devnet:
external: true
我想念什么?
我在 Synology 上运行 Jenkins LTS 容器,并使用 Gitea(由 Synology 提供)。我想我也有同样的问题。我很确定一切都是正确的,但 Jenkins 无法访问 git 存储库。
我发现,您需要使用 Synology 服务器的 IP 地址,因为 Jenkins 正在运行不同的网络(因为它是一个容器)。但既然你写了 {ip} 我想这不是问题所在。
我可以在 Gitea 日志中看到 Jenkins 正在访问该存储库,但它只是退出了。 日志显示消息
ssh 尚未通过身份验证
因此 Jenkins Job 可以找到并尝试访问该存储库。但 ssh 拒绝它。
如果我是正确的,容器包含所有需要的东西,所以在这种情况下也是 ssh 客户端。
我认为synology或Jenkins正在使用ssh-rsa。默认情况下,它在 ssh 上不再可用。
谷歌此以获取更多信息;
PubkeyAcceptedAlgorithms=+ssh-rsa
我没有修复它,但这也许可以帮助你。