Jenkins 作业失败,无法对远程执行 scp,权限被拒绝公钥,密码

如何解决Jenkins 作业失败,无法对远程执行 scp,权限被拒绝公钥,密码

我几乎不需要帮助。 在我的 Jenkinsfile 中,我有一个要执行 shell 的阶段:

sh "sudo scp /home/boris2/webgoat-server-v8.1.0.jar boris3@10.113.80.109:/home/boris3"

但詹金斯工作失败并输出:权限被拒绝(公钥,密码)

我可以通过 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 类型-1 debug1:身份文件/root/.ssh/id_ed25519-cert type -1 debug1:身份文件/root/.ssh/id_ed25519_sk 类型-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 debug1:kex:算法:curve25519-sha256 debug1:kex:主机密钥算法:ecdsa-sha2-nistp256 debug1:kex:服务器->客户端密码:chacha20-poly1305@openssh.com MAC:压缩:无 debug1: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 debug1: kex_input_ext_info: server-sig-algs= debug1:收到 SSH2_MSG_SERVICE_ACCEPT debug1:可以继续的身份验证:公钥、密码 debug1:下一个身份验证方法:publickey 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:下一个身份验证方法:密码 debug1: read_passphrase: can't open /dev/tty: No such device or address debug1:可以继续的身份验证:公钥、密码 权限被拒绝,请重试。 debug1: read_passphrase: can't open /dev/tty: No such device or address debug1:可以继续的身份验证:公钥、密码 权限被拒绝,请重试。 debug1: read_passphrase: can't open /dev/tty: No such device or address debug1:可以继续的身份验证:公钥、密码 debug1:没有更多的身份验证方法可以尝试。 boris3@10.113.80.109:权限被拒绝(公钥,密码)。

解决方法

您可以尝试 scp -v 以查看正在使用哪些 ssh 密钥进行通信。
如果您能够连接到远程机器 - 正如您所说 - 但不是作为 jenkins 用户,请确保 $JENKINS_HOME 目录包含 .ssh/ 目录和与远程机器通信所需的特定 ssh 密钥。

另外,我不认为 sudo 是 scp 工作所必需的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?