gpt4 book ai didi

jenkins - 从 Jenkins 到同一主机的SSH

转载 作者:行者123 更新时间:2023-12-02 14:11:57 26 4
gpt4 key购买 nike

我有一个 jenkins 实例在我的树莓派 3 上运行,我的(简单)apache 网络服务器也在同一个树莓派上运行。

我有一个来自 jenkins 的管道来获取一个 git repo,构建它并(通过 scp)将构建文件放在我的网络服务器上。

我有一个 ssh 私钥/公钥设置,但是当 jenkins 托管在具有相同 IP 地址的同一“机器”上时,拥有一个 ssh key 有点愚蠢(?)不是吗?

无论如何,在我的树莓派上,我已经设置了自动 key 文件和带有公钥的已知主机文件,并且我已经通过 ssh-agent 插件将私钥添加到了 jenkins。

在这里,您有 jenkins 用来定义我的管道的我的 jenkinsfile:

node{
stage('Checkout') {
checkout scm
}

stage('install') {
nodejs(nodeJSInstallationName: 'nodeJS10.5.0') {
sh "npm install"
}
}

stage('build'){
nodejs(nodeJSInstallationName: 'nodeJS10.5.0') {
sh "npm run build"
}
}

stage('connect ssh and remove files') {
sshagent (credentials: ["0527982f-7794-45d0-99b0-135c868c5b36"]) {
sh "ssh pi@123.456.789.123 -p 330 rm -rf /var/www/html/*"
}
}


stage('upload new files'){
sshagent (credentials: ["0527982f-7794-45d0-99b0-135c868c5b36"]) {
sh "scp -P 330 -r ./build/* pi@123.456.789.123:/var/www/html"
}
}
}

这是失败的倒数第二个作业的输出:
[Pipeline] }
[Pipeline] // nodejs
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (connect ssh and remove files)
[Pipeline] sh
[Deploy_To_Production] Running shell script
+ ssh pi@123.456.789.123 -p 330 rm -rf /var/www/html/asset-manifest.json /var/www/html/css /var/www/html/favicon.ico /var/www/html/fonts /var/www/html/images /var/www/html/index.html /var/www/html/manifest.json /var/www/html/service-worker.js /var/www/html/static /var/www/html/vendor
Host key verification failed.
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 255
Finished: FAILURE

注意:出于安全原因,我更改了 IP 地址和 ssh 端口。

手动我可以 ssh 到我的树莓派,我可以从我的笔记本电脑手动执行命令(来自同一个域和其他域的作品)。

我还端口转发了本地 ip,以便我不在家时通过 SSH 连接到它。

我想我在 SSH key 等方面做错了,但我不是任何专家!

任何人都可以帮忙吗?

最佳答案

我还需要 4 个声望点来发表评论,所以我必须写答案:)

尝试使用 -v 调试 ssh 连接:

stage('connect ssh and remove files') {
sshagent (credentials: ["0527982f-7794-45d0-99b0-135c868c5b36"]) {
sh "ssh -v pi@123.456.789.123 -p 330 rm -rf /var/www/html/*"
}
}

在另一方面
主机 key 验证失败 表示远程主机的主机 key 已更改或您没有远程主机的主机 key 。所以首先尝试 ssh -v pi@123.456.789.123 作为 Jenkins 用户,来自 Jenkins 主机。

关于jenkins - 从 Jenkins 到同一主机的SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50982734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com