无法在 Jenkins 中进行 scp

无法在 Jenkins 中进行 scp

我是詹金斯的新用户。我正在尝试运行 shell 脚本作为 Jenkins 构建步骤的一部分。该脚本有一个将文件scp传输.tar到远程服务器的命令。

当我运行此脚本时,它工作正常并给出所需的输出,但是当通过 Jenkins 执行它时,我收到错误:

Host key verification failed.
lost connection

直到该scp命令,脚本执行成功,然后跳过该scp步骤。

我什至无法通过 Jenkins 到远程服务器的 SSH 或 SCP。

请告知这里可以做什么?ssh和需要安装哪些插件scp

答案1

主机密钥需要添加到客户端的“known_hosts”文件中,在您的情况下是用户,jenkins 服务器在其帐户下运行。所以你需要做的是:

  1. 为 jenkins 用户启用 ssh 登录
  2. 以詹金斯身份登录
  3. ssh 到远程服务器
  4. 回答问题“是否应该添加服务器身份..”是..

然后你就完成了。之后,脚本将能够使用用户的 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

相关内容