首页 > 解决方案 > Jenskins 无法使用 Shell 脚本在另一个 EC2 实例上部署 War 文件

问题描述

我花了无数个小时来完成这项琐碎的工作,但它不会让步。我的目标是使用命令将在 MachineA 上编译的 Jenkins 战争文件部署到 MachineB scp。但我一直有身份验证错误。

如果我手动 ssh 进入 MachineA 并运行以下命令,它可以顺利运行:

scp -i ~/<keypairdemo.pem> <../*.war> ubuntu@<EC2-PRIVATE-IP>:~/apache-tomcat-8.5.39/webapps/

现在,如果我将那个确切的命令放在shell scriptJenkins 的选项中,它会继续抛出以下错误。我试过做chmod 777 dev/tty,它没有做任何事情。我一直在修补到我现在甚至无法sudo su在我自己的 EC2 实例上做的地步!

[WarFileDemo] $ /bin/sh /tmp/jenkins3925660300944070231.sh
“Starting to copy the build - aPPLY”
Executing: program /usr/bin/ssh host <EC2-PRIVATE-IP>, user ubuntu, command scp -v -t ~/apache-tomcat-8.5.39/webapps/
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to <EC2-PRIVATE-IP> [<EC2-PRIVATE-IP>] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /var/lib/jenkins/keypairdemo.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file /var/lib/jenkins/keypairdemo.pem-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.2
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.2 pat OpenSSH* compat 0x04000000
debug1: Authenticating to <EC2-PRIVATE-IP>:22 as 'ubuntu'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:Ee13H6eEq0VyQlVMUh2zIPyi/3eO5lMhpoALmCOZS/A
debug1: read_passphrase: can't open /dev/tty: No such device or address
Host key verification failed.
lost connection

我能够部署的唯一方法是使用 Tomcat 的部署插件,我已经为其输入了 tomcat 服务器的凭据和 URL。但我想用脚本来做这一切。

标签: amazon-web-servicesubuntujenkinsamazon-ec2jenkins-pipeline

解决方案


您似乎遇到了主机密钥验证错误。

主机密钥验证失败。

尝试将 -o StrictHostKeyChecking=no 添加到您的 scp 命令。


推荐阅读