我是詹金斯的新用户。我正在尝试运行 shell 脚本作为 Jenkins 构建步骤的一部分。该脚本有一个将文件scp
传输.tar
到远程服务器的命令。
当我运行此脚本时,它工作正常并给出所需的输出,但是当通过 Jenkins 执行它时,我收到错误:
Host key verification failed.
lost connection
直到该scp
命令,脚本执行成功,然后跳过该scp
步骤。
我什至无法通过 Jenkins 到远程服务器的 SSH 或 SCP。
请告知这里可以做什么?ssh
和需要安装哪些插件scp
?
答案1
主机密钥需要添加到客户端的“known_hosts”文件中,在您的情况下是用户,jenkins 服务器在其帐户下运行。所以你需要做的是:
- 为 jenkins 用户启用 ssh 登录
- 以詹金斯身份登录
- ssh 到远程服务器
- 回答问题“是否应该添加服务器身份..”是..
然后你就完成了。之后,脚本将能够使用用户的 pubkey 执行 scp。
答案2
简而言之,您需要将 Jenkins 的用户 ssh 密钥添加到您尝试以该用户身份登录的服务器。
细节:
登录jenkins服务器,然后:
sudo passwd jenkins
输入两次你想要给 jenkins 用户的密码,然后:
su jenkins
cd
ssh-keygen
按 Enter 键查看所有选项。然后将新的 ssh 密钥复制到要复制到的服务器:
scp .ssh/id_rsa.pub user@newserver:/home/user/jenkins_key
如果出现提示,请按“是”继续。
然后以该用户身份登录该服务器,然后:
ssh user@server
并输入密码,然后
cd .ssh
ls -lah
如果没有“authorized_keys”则:
cd .ssh
touch authorized_keys
如果“authorized_keys”文件存在,请忽略上述步骤,然后:
cd
cat jenkins_key >> .ssh/authorized_keys
rm -rf ./jenkins_key
退出/注销服务器然后返回詹金斯服务器:
ssh user@newserver
您应该直接登录,无需提示或输入密码
现在在 Jenkins 中再次运行 scp 作业
答案3
我解决了这个问题。 1.我在 jenkins 用户下创建了一个新的 shh 密钥对。 2. 将 .pub 密钥添加到远程服务器。从 jenkins 服务器执行 ssh 时,将使用新生成的私钥。现在 ssh 和 scp 都可以作为构建步骤的一部分。谢谢
答案4
SSH 代理插件
该插件允许您通过 Jenkins 中的 ssh-agent 提供 SSH 凭据来构建。 https://plugins.jenkins.io/ssh-agent/
如果您再次看到此错误,请从 Jenkins 作业运行此命令一次:
ssh -o StrictHostKeyChecking=no user@host hostname
之后,您可以简单地从 Jenkins 作业运行 ssh:
ssh user@host hostname