Jenkins如何与Linux网络通信
导读:Jenkins与Linux网络通信的实现方法及配置步骤 1. 前提准备:确保网络可达性 在配置Jenkins与Linux通信前,需确保两者处于同一网络环境或可通过公网访问,并完成以下基础检查: 测试Linux服务器的网络连通性(如从Jen...
Jenkins与Linux网络通信的实现方法及配置步骤
1. 前提准备:确保网络可达性
在配置Jenkins与Linux通信前,需确保两者处于同一网络环境或可通过公网访问,并完成以下基础检查:
- 测试Linux服务器的网络连通性(如从Jenkins服务器执行
ping < Linux_IP>); - 确认Linux服务器的SSH服务已启动(默认端口22,可通过
systemctl status sshd验证); - 若Jenkins与Linux不在同一网络,需配置端口转发或SSH反向隧道(如将Linux的22端口映射到公网IP的指定端口)。
2. 安装SSH插件(Jenkins端必备)
Jenkins通过SSH协议与Linux通信,需安装官方提供的Publish Over SSH插件(支持文件传输与命令执行):
- 登录Jenkins Web界面,进入Manage Jenkins > Manage Plugins;
- 在“Available”标签页搜索“Publish Over SSH”,勾选后点击“Install without restart”;
- 安装完成后,重启Jenkins服务(
systemctl restart jenkins)使插件生效。
3. 配置Linux SSH密钥对(实现免密登录)
为避免每次连接都需要输入密码,需在Jenkins服务器生成SSH密钥对,并将公钥添加到Linux服务器的authorized_keys文件中:
- 在Jenkins服务器执行
ssh-keygen -t rsa,按提示生成密钥(默认保存路径为~/.ssh/id_rsa); - 将公钥内容(
cat ~/.ssh/id_rsa.pub)复制到Linux服务器的~/.ssh/authorized_keys文件中(若文件不存在则创建); - 设置
authorized_keys文件的权限为600(chmod 600 ~/.ssh/authorized_keys),确保只有所有者可读写。
4. 在Jenkins中配置SSH Server(连接目标Linux)
通过Jenkins的Publish Over SSH插件配置Linux服务器的连接信息:
- 进入Manage Jenkins > Manage Credentials,点击“Add Credentials”;
- 选择“SSH Username with private key”类型,填写以下信息:
- Username:Linux服务器的登录用户名(如
root或jenkins); - Private Key:选择“Enter directly”,粘贴Jenkins服务器上的私钥内容(
~/.ssh/id_rsa); - 点击“OK”保存凭据。
- Username:Linux服务器的登录用户名(如
- 再次进入Manage Jenkins >
Configure System,找到“Publish over SSH” section,点击“Add”新增SSH Server:
- Name:自定义名称(如“Linux_Server”);
- Hostname:Linux服务器的IP地址或域名;
- Username:与凭据中的用户名一致;
- Remote Directory:Linux上的目标目录(如
/home/jenkins,用于存放传输的文件); - 点击“Test Configuration”验证连接是否成功(显示“Success”则表示配置正确)。
5. 在Jenkins项目中使用SSH通信
配置完成后,可在Jenkins项目中添加SSH构建步骤,实现文件传输或命令执行:
- 创建或编辑Jenkins项目,进入“Build” section,点击“Add build step”,选择“Send files or execute commands over SSH”;
- 在“SSH Server”下拉菜单中选择之前配置的Linux Server(如“Linux_Server”);
- 配置文件传输(可选):
- Source files:填写需要传输的文件路径(相对于Jenkins工作空间,如
target/*.war); - Remove prefix:移除传输路径的前缀(如
target/,仅传输*.war文件); - Remote directory:Linux上的目标目录(如
/opt/app,需与SSH Server配置中的Remote Directory一致);
- Source files:填写需要传输的文件路径(相对于Jenkins工作空间,如
- 配置命令执行(可选):
- 在“Exec command”文本框中输入需要执行的Linux命令(如
cd /opt/app & & ./start.sh);
- 在“Exec command”文本框中输入需要执行的Linux命令(如
- 保存项目配置,点击“Build Now”即可触发SSH通信。
6. 可选:配置Jenkins监听端口(外部访问)
若需要从外部网络访问Jenkins(如远程触发构建),需调整Jenkins的网络配置:
- 编辑Jenkins配置文件(
/etc/sysconfig/jenkins,CentOS)或/etc/default/jenkins(Debian),修改JENKINS_PORT为所需端口(如8080); - 若Jenkins服务器有防火墙,需开放对应端口(如
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp,然后sudo firewall-cmd --reload); - 若需要从公网访问,可配置反向隧道(如使用
ssh -R 8080:localhost:8080 user@public_server)或Nginx反向代理(将公网IP的80端口转发到Jenkins服务器的8080端口)。
通过以上步骤,Jenkins即可与Linux服务器建立安全的网络通信,实现远程命令执行、文件传输等功能,支撑自动化构建、部署等场景。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins如何与Linux网络通信
本文地址: https://pptw.com/jishu/746860.html
