【问题标题】:How to get Jenkins to create SSH tunnel to new EC2 instance?如何让 Jenkins 创建到新 EC2 实例的 SSH 隧道?
【发布时间】:2022-12-29 18:00:52
【问题描述】:
我有本地 Jenkins 和 Sonar Cube 设置。
Jenkins 将启动一个 EC2 实例(使用 ec2-plugin)并在其上运行一个代理,但我现在希望该作业将数据发布回 Sonar Cube API。
我试图通过将本地 Sonar Cube 节点暴露在互联网上来避免这样做。
由于我的 Jenkins 实例可以通过 SSH 连接到启动的节点,我假设我能够添加一个脚本,该脚本还可以创建一个 SSH 隧道到将端口转发 Sonar Cube 端口的节点。
有谁知道我可以让 Jenkins 在启动代理节点时设置 SSH 隧道的方法吗?
我只希望 Jenkins 能够在启动节点后运行以下命令。
ssh -R 9000:localhost:9000 me@my.agentnode.aws
【问题讨论】:
标签:
amazon-web-services
jenkins
amazon-ec2
ssh
sonarqube
【解决方案1】:
“代理命令前缀”和/或“根命令前缀”(在 AMI 类型设置下)可以执行此操作。
代理命令前缀指定为“-R 127.0.0.1:22222:localhost:22”
产生下一个扩展连接命令
INFO: Launching remoting agent (via SSH client process): ssh -o StrictHostKeyChecking=no -i /tmp/ec2_15656646762413263895.pem development@aaa.bbb.ccc.ddd -p 22 -R 127.0.0.1:22222:localhost:22 java -jar ./remoting.jar -workDir .
并在节点上给我们
TCP 127.0.0.1:22222 0.0.0.0:0 LISTENING