1. 为什么需要Finalshell连接VM虚拟机和Jenkins?
作为一名长期在Linux环境下工作的开发者,我深刻理解远程连接工具的重要性。Finalshell作为一款国产SSH工具,凭借其直观的界面和强大的功能,已经成为许多开发者的首选。特别是在需要同时管理虚拟机环境和持续集成服务时,Finalshell能显著提升工作效率。
VM虚拟机(如VMware Workstation)为我们提供了隔离的开发环境,而Jenkins则是自动化构建和部署的核心工具。将它们通过Finalshell统一管理,可以避免频繁切换窗口的麻烦,实现一站式操作。这种组合特别适合以下场景:
- 本地开发测试环境搭建
- 自动化构建流水线管理
- 多环境配置统一维护
提示:Finalshell支持Windows、Mac和Linux三大平台,本文以Windows 10系统为例,但核心操作在其他平台同样适用。
2. 环境准备与基础配置
2.1 安装必备软件
在开始连接前,我们需要确保以下软件已正确安装:
-
VMware Workstation Pro(建议16.x以上版本)
- 官网下载安装包后,按向导完成安装
- 安装时注意勾选"增强型键盘驱动程序"(这对SSH连接很重要)
-
Finalshell(最新稳定版)
- 从官网下载安装包(约50MB)
- 安装过程简单,但建议自定义安装路径(避免C盘空间不足)
- 首次启动时会提示导入设置,新用户可直接跳过
-
虚拟机中的Linux系统(以Ubuntu 20.04为例)
- 在VMware中新建虚拟机并安装系统
- 确保安装时勾选了OpenSSH server组件
- 若已安装系统但未装SSH,可执行:
bash复制sudo apt update && sudo apt install openssh-server -y
2.2 网络配置关键点
VMware提供多种网络连接模式,对于SSH连接,建议采用以下配置:
| 网络模式 | 适用场景 | IP获取方式 | 优缺点 |
|---|---|---|---|
| NAT | 单机开发 | DHCP自动分配 | 主机可上网,虚拟机共享IP |
| 桥接 | 团队协作 | 可静态/DHCP | 虚拟机获得独立局域网IP |
| 仅主机 | 完全隔离 | 手动配置 | 最高安全性但无法上网 |
推荐配置步骤:
- 在VMware中右键虚拟机 → 设置 → 网络适配器
- 选择"桥接模式"(确保宿主机和虚拟机在同一局域网)
- 启动虚拟机,使用
ifconfig查看分配的IP地址 - 在宿主机ping该IP,测试网络连通性
注意:如果使用NAT模式,需要在VMware的"虚拟网络编辑器"中配置端口转发,将宿主机的某个端口(如2222)映射到虚拟机的22端口。
3. Finalshell连接VM虚拟机的详细步骤
3.1 创建SSH连接配置
- 打开Finalshell,点击顶部菜单的"文件夹"图标 → "新建连接"
- 在弹出的窗口中填写以下信息:
- 连接名称:自定义(如"Ubuntu_Dev")
- 主机:虚拟机的IP地址(通过
ifconfig获取) - 端口:22(默认SSH端口)
- 用户名:虚拟机中的登录用户(如ubuntu)
- 密码/密钥:选择认证方式
- 点击"确定"保存配置
认证方式选择建议:
- 测试环境:密码认证(简单快捷)
- 生产环境:密钥认证(更安全)
- 生成密钥对:Finalshell工具栏 → "工具" → "SSH密钥管理"
- 将公钥复制到虚拟机的
~/.ssh/authorized_keys文件中
3.2 高级连接参数调优
在"高级"选项卡中,有几个关键参数值得关注:
-
终端设置:
- 缓冲区行数:建议设置为5000(方便查看历史输出)
- 字体:推荐使用"Consolas"或"JetBrains Mono"等等宽字体
- 颜色方案:根据喜好选择(深色背景更护眼)
-
SSH参数:
- 连接超时:设置为30秒(避免网络波动导致误判)
- 保持连接:勾选"发送保持活动信号"(防止会话超时断开)
-
文件传输:
- 默认传输模式:SFTP(更安全)
- 本地和远程默认目录:设置为常用工作路径
3.3 常见连接问题排查
问题1:连接超时
- 检查虚拟机IP是否正确(
ifconfig确认) - 验证宿主机能否ping通虚拟机
- 查看虚拟机防火墙状态:
bash复制sudo ufw status # Ubuntu系 sudo systemctl status firewalld # CentOS系 - 必要时临时关闭防火墙测试:
bash复制sudo ufw disable
问题2:认证失败
- 检查用户名/密码是否正确(注意大小写)
- 对于密钥认证:
- 确认
~/.ssh目录权限为700 - 确认
authorized_keys文件权限为600 - 检查密钥是否加载到Finalshell的密钥管理器
- 确认
问题3:中文乱码
- 在Finalshell终端执行:
bash复制export LANG=en_US.UTF-8 - 或永久修改虚拟机配置:
bash复制sudo locale-gen en_US.UTF-8 sudo update-locale LANG=en_US.UTF-8
4. 通过Finalshell管理Jenkins服务
4.1 Jenkins基础环境准备
在虚拟机中安装Jenkins的推荐方式:
-
添加Jenkins官方仓库:
bash复制wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' -
安装Jenkins:
bash复制sudo apt update sudo apt install jenkins -y -
启动服务并设置开机自启:
bash复制sudo systemctl start jenkins sudo systemctl enable jenkins -
检查运行状态:
bash复制sudo systemctl status jenkins
4.2 端口转发与安全访问
默认情况下,Jenkins运行在8080端口。我们可以通过Finalshell的端口转发功能安全访问:
- 在Finalshell连接上右键 → "隧道" → "添加隧道"
- 配置参数:
- 类型:本地转发
- 本地端口:8888(或其他未占用端口)
- 目标主机:localhost
- 目标端口:8080
- 保存后在浏览器访问
http://localhost:8888
这种方式的优势在于:
- 不需要在虚拟机防火墙开放8080端口
- 所有流量通过加密的SSH通道传输
- 可以绕过公司网络对特定端口的限制
4.3 Jenkins日常运维命令
通过Finalshell可以方便地执行Jenkins管理命令:
-
查看日志:
bash复制journalctl -u jenkins -f # 实时日志 tail -n 100 /var/log/jenkins/jenkins.log # 尾部日志 -
重启服务:
bash复制sudo systemctl restart jenkins -
备份配置:
bash复制sudo tar czvf jenkins_backup.tar.gz /var/lib/jenkins -
插件管理:
bash复制# 列出已安装插件 ls /var/lib/jenkins/plugins/
4.4 文件传输实践
Finalshell内置的SFTP功能极大简化了Jenkins配置管理:
-
上传构建脚本:
- 左侧切换到SFTP面板
- 本地找到脚本文件,右键"上传"
- 拖放到Jenkins工作目录(如
/var/lib/jenkins/workspace/)
-
下载构建产物:
- 在远程目录找到文件(如
.war包) - 右键"下载"到本地
- 在远程目录找到文件(如
-
批量修改配置:
- 直接编辑
config.xml等配置文件 - 修改后自动保存(Finalshell会提示上传)
- 直接编辑
技巧:使用"同步"功能可以保持本地和远程目录的一致性,特别适合配置文件版本控制。
5. 高级技巧与性能优化
5.1 多会话管理
Finalshell支持同时打开多个终端会话,提高工作效率:
-
分屏功能:
- 右键标签页 → "垂直分割"或"水平分割"
- 每个分屏可以独立操作不同服务器
-
会话组:
- 将相关连接拖放到同一组
- 支持批量执行命令(右键组 → "向所有会话发送命令")
-
快速切换:
- 使用
Ctrl+Tab切换标签页 Ctrl+数字直接跳转到指定标签
- 使用
5.2 自动化脚本集成
Finalshell支持通过脚本自动化常见操作:
-
本地脚本执行:
bash复制# 保存为connect_vm.sh #!/bin/bash sshpass -p 'your_password' ssh ubuntu@192.168.1.100- 在Finalshell中右键 → "打开本地终端"
- 执行
./connect_vm.sh
-
远程命令批量执行:
- 创建命令片段(工具栏 → "工具" → "命令片段")
- 例如备份Jenkins的片段:
bash复制sudo systemctl stop jenkins tar czvf /tmp/jenkins_backup_$(date +%Y%m%d).tar.gz /var/lib/jenkins sudo systemctl start jenkins
5.3 性能调优建议
当管理多个虚拟机时,这些设置可以提升Finalshell的响应速度:
-
SSH参数优化:
- 连接设置中启用"压缩"
- 使用更快的加密算法(如
aes128-ctr)
-
界面优化:
- 关闭不必要的视觉效果(设置 → "界面" → "禁用动画")
- 减少终端回滚行数(5000行足够大多数场景)
-
内存管理:
- 定期清理历史会话(右键连接 → "清除缓存")
- 长时间不用时关闭文件传输窗口
5.4 安全加固措施
-
SSH层面:
- 修改虚拟机SSH默认端口(编辑
/etc/ssh/sshd_config) - 禁用root远程登录(设置
PermitRootLogin no) - 启用失败锁定(安装
fail2ban)
- 修改虚拟机SSH默认端口(编辑
-
Jenkins层面:
- 设置强密码策略
- 定期更新插件(管理界面 → "插件管理")
- 限制构建节点的访问权限
-
Finalshell层面:
- 启用主密码保护(设置 → "安全")
- 定期导出连接配置备份
- 不使用公共电脑保存密码
6. 实际案例:从零搭建CI/CD环境
为了展示Finalshell在真实场景中的应用,我们来看一个完整的示例:
6.1 环境初始化
- 在VMware中创建Ubuntu 22.04虚拟机
- 通过Finalshell连接并执行初始化:
bash复制# 安装基础工具 sudo apt update && sudo apt install -y git curl net-tools # 安装Docker(用于容器化构建) curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER
6.2 Jenkins与Docker集成
-
使用Finalshell的SFTP上传
docker-compose.yml:yaml复制version: '3' services: jenkins: image: jenkins/jenkins:lts ports: - "8080:8080" - "50000:50000" volumes: - jenkins_home:/var/jenkins_home volumes: jenkins_home: -
通过终端启动服务:
bash复制
docker-compose up -d -
查看初始密码:
bash复制docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
6.3 配置自动化流水线
-
在Finalshell中创建Git仓库克隆:
bash复制git clone https://github.com/your/project.git -
编写Jenkinsfile并上传:
groovy复制pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package' } } stage('Test') { steps { sh 'mvn test' } } } } -
通过端口转发访问Jenkins界面完成配置
6.4 日常维护操作
-
空间清理:
bash复制# 清理Docker无用资源 docker system prune -f # 清理Jenkins构建历史 find /var/jenkins_home/jobs -name builds -type d -exec rm -rf {} \; -
性能监控:
bash复制# 查看资源使用 top docker stats # 网络检查 netstat -tulnp -
备份恢复:
bash复制# 全量备份 tar czvf jenkins_backup.tar.gz /var/jenkins_home # 恢复时 tar xzvf jenkins_backup.tar.gz -C /
通过这个完整案例,我们可以看到Finalshell如何贯穿整个CI/CD环境的生命周期管理,从初始配置到日常运维,提供了全方位的支持。
