Jenkins 作业失败,无法对远程执行 scp,权限被拒绝(公钥、密码)
Posted
技术标签:
【中文标题】Jenkins 作业失败,无法对远程执行 scp,权限被拒绝(公钥、密码)【英文标题】:Jenkins job failed, cannot do scp to remote, Permission denied (publickey,password) 【发布时间】:2021-07-15 16:02:42 【问题描述】:我需要一点帮助。 在我的 Jenkinsfile 中,我有要执行 shell 的阶段:
sh "sudo scp /home/boris2/webgoat-server-v8.1.0.jar boris3@10.113.80.109:/home/boris3"
但 jenkins 作业失败并输出:权限被拒绝(公钥,密码)
我可以通过 ssh 连接到远程,我可以通过终端执行 scp 命令。 我尝试了很多解决方案,但找不到合适的解决方案。
谁能帮忙?
当我尝试 scp -v 我有这个输出:
OpenSSH_8.2p1 Ubuntu-4ubuntu0.2,OpenSSL 1.1.1f 2020 年 3 月 31 日
debug1:读取配置数据 /etc/ssh/ssh_config
debug1:/etc/ssh/ssh_config 第 19 行:包括 /etc/ssh/ssh_config.d/.conf 没有匹配的文件
debug1:/etc/ssh/ssh_config 第 21 行:为 * 应用选项
debug1:连接到 10.113.80.109 [10.113.80.109] 端口 22。
debug1:建立连接。
debug1:身份文件 /root/.ssh/id_rsa 类型 -1
debug1:身份文件/root/.ssh/id_rsa-cert type -1
debug1:身份文件 /root/.ssh/id_dsa 类型 -1
debug1:身份文件 /root/.ssh/id_dsa-cert type -1
debug1:身份文件 /root/.ssh/id_ecdsa 类型 -1
debug1:身份文件/root/.ssh/id_ecdsa-cert type -1
debug1:身份文件 /root/.ssh/id_ecdsa_sk 类型 -1
debug1:身份文件/root/.ssh/id_ecdsa_sk-cert type -1
debug1:身份文件/root/.ssh/id_ed25519 type -1
debug1:身份文件/root/.ssh/id_ed25519-cert type -1
debug1:身份文件/root/.ssh/id_ed25519_sk type -1
debug1:身份文件/root/.ssh/id_ed25519_sk-cert type -1
debug1:身份文件 /root/.ssh/id_xmss 类型 -1
debug1:身份文件/root/.ssh/id_xmss-cert type -1
debug1:本地版本字符串 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
debug1:远程协议版本2.0,远程软件版本OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
debug1: match: OpenSSH_8.2p1 Ubuntu-4ubuntu0.2 pat OpenSSH compat 0x04000000
debug1:以 'boris3' 身份向 10.113.80.109:22 进行身份验证
debug1: SSH2_MSG_KEXINIT 已发送
debug1:收到 SSH2_MSG_KEXINIT
调试1:kex:算法:curve25519-sha256
debug1:kex:主机密钥算法:ecdsa-sha2-nistp256
调试1:kex:服务器->客户端密码:chacha20-poly1305@openssh.com MAC:压缩:无
调试1:kex:客户端->服务器密码:chacha20-poly1305@openssh.com MAC:压缩:无
debug1:期待 SSH2_MSG_KEX_ECDH_REPLY
debug1:服务器主机密钥:ecdsa-sha2-nistp256 SHA256:Sr+ta5yB6J7Kz9FlJoZBy/W3jb0hBeZv4BHcJuDvsE8
debug1:主机 '10.113.80.109' 是已知的并且与 ECDSA 主机密钥匹配。
debug1:在 /root/.ssh/known_hosts:2 中找到密钥
debug1:在 134217728 个块后重新生成密钥
debug1: SSH2_MSG_NEWKEYS 已发送
debug1:期待 SSH2_MSG_NEWKEYS
debug1:收到 SSH2_MSG_NEWKEYS
debug1:在 134217728 个块之后重新键入
debug1:将尝试密钥:/root/.ssh/id_rsa
debug1:将尝试密钥:/root/.ssh/id_dsa
debug1:将尝试密钥:/root/.ssh/id_ecdsa
debug1:将尝试密钥:/root/.ssh/id_ecdsa_sk
debug1:将尝试密钥:/root/.ssh/id_ed25519
debug1:将尝试密钥:/root/.ssh/id_ed25519_sk
debug1:将尝试密钥:/root/.ssh/id_xmss
debug1:收到 SSH2_MSG_EXT_INFO
调试1:kex_input_ext_info:server-sig-algs=
【问题讨论】:
“我尝试了很多解决方案,但找不到合适的解决方案” 并没有告诉我们任何您所做的尝试。 改进您的问题!对于您的问题,您能否举例说明代码?这种做法将大大改善这个问题。 是的,我明白了,很抱歉。我试图在远程机器(boris3)上更改我的文件夹的权限,试图将 jenkins 用户添加到主机和远程上的 sudoers 文件中......不记得所有的事情 【参考方案1】:您可以尝试 scp -v 来查看正在使用哪些 ssh 密钥进行通信。 如果您能够连接到远程计算机 - 正如您所说 - 但不是作为 jenkins 用户,请确保 $JENKINS_HOME 目录包含 .ssh/ 目录您需要与远程计算机通信的特定 ssh 密钥。
另外我不认为 sudo 是 scp 工作所必需的。
【讨论】:
我试图更改 jenkins 的主目录,以便 jenkins 用户拥有所有权限,但仍然出现错误:debug1: read_passphrase: can't open /dev/tty: No such device or address debug1:可以继续的身份验证:publickey,password debug1:没有更多的身份验证方法可以尝试。 boris3@10.113.80.109:权限被拒绝(公钥,密码)。 同样在我的新 Jenkins_home 目录中,我没有 .ssh/ 目录。现在如何生成 ssh 密钥以及我应该使用哪个用户?以上是关于Jenkins 作业失败,无法对远程执行 scp,权限被拒绝(公钥、密码)的主要内容,如果未能解决你的问题,请参考以下文章
jenkins执行shell脚本,使用scp免密传输失败问题
jenkins 2:用ssh agent插件在pipeline里实现scp和远程执行命令
撤销远程机器中的分发证书后,Jenkins 工作无法正常工作