Jenkins连接外部EC2实例异常:误连自身节点创建目录问题
问题分析与解决:Jenkins Pipeline连接外部EC2失败,操作执行在本地节点
我尝试通过Jenkins连接外部EC2实例172.20.160.4并创建testfolder目录,但实际连接到了Jenkins自身所在的实例,结果显示"Connected to ip-165-14-265-120.us-east-2.compute.internal",且testfolder目录创建在了自身节点上。
原Pipeline脚本如下:
agent { label 'smg-mitger' } stage('Connect to EC2 and Perform Operations') { steps { script { sh ''' #!/bin/bash echo \"Attempting to connect to EC2 instance\" ssh 172.20.160.4 echo \"Connected to $(hostname)\" cd /home/ops echo \"Current directory:\" pwd echo \"Listing contents:\" ls -la echo \"Creating folder testfolder\" mkdir -p testfolder echo \"Folder created.\" ls -la ''' } } }
问题原因
原脚本中ssh 172.20.160.4执行后,后续命令并没有在远程EC2实例上运行。因为ssh命令如果不指定远程执行的命令,会进入交互式会话,但Jenkins的执行环境是非交互式的,ssh会直接退出,后续所有命令自然在本地Jenkins节点继续执行。
修复方案
方式一:通过Here Document传递远程命令
把需要在远程执行的命令通过ssh一次性传递,确保所有命令都在目标EC2实例上运行:
agent { label 'smg-mitger' } stage('Connect to EC2 and Perform Operations') { steps { script { sh ''' #!/bin/bash echo "Attempting to connect to EC2 instance" ssh 172.20.160.4 << 'EOF' echo "Connected to $(hostname)" cd /home/ops echo "Current directory:" pwd echo "Listing contents:" ls -la echo "Creating folder testfolder" mkdir -p testfolder echo "Folder created." ls -la EOF ''' } } }
- 这里使用Here Document(
<< 'EOF')语法,将EOF之间的所有内容作为ssh的输入,在远程实例中执行。'EOF'加单引号可以避免本地变量替换,确保命令完全在远程环境运行。
方式二:使用Jenkins SSH插件(更推荐)
如果频繁操作远程服务器,建议安装Jenkins SSH插件,通过插件提供的步骤执行远程操作,更简洁易维护:
- 先在Jenkins全局配置中添加目标EC2实例的SSH凭证(包含IP、用户名、密钥等信息)
- 修改Pipeline脚本:
agent { label 'smg-mitger' } stage('Connect to EC2 and Perform Operations') { steps { script { sshCommand( remote: [ name: 'EC2-172.20.160.4', host: '172.20.160.4', user: '你的远程用户名', credentialsId: '你的SSH凭证ID' ], command: ''' echo "Connected to $(hostname)" cd /home/ops echo "Current directory:" pwd echo "Listing contents:" ls -la echo "Creating folder testfolder" mkdir -p testfolder echo "Folder created." ls -la ''' ) } } }
额外注意事项
- 确保Jenkins节点(
smg-mitger标签对应的节点)能通过SSH无密码登录目标EC2实例,比如提前配置好公钥认证,避免因需要输入密码导致执行失败。 - 检查目标EC2实例的安全组规则,允许Jenkins节点的IP访问22端口。
内容的提问来源于stack exchange,提问作者asif kaif
相关产品推荐
相关产品推荐

