3、Linux基础环境搭建:操作系统安装(Ubuntu/Debian)、网络配置、SSH远程访问

好,咱们正式开始动手了。这一章要解决的是「地基」问题——把Linux系统装好,把网络调通,让你能远程连上去干活。别小看这一步,我见过太多人在现场折腾半天,结果发现是网线没插紧,或者SSH服务没开。咱们一次搞定,后面就省心了。

本章核心目标:在一台工控机或虚拟机上,完成Ubuntu Server 22.04 LTS的安装,配置静态IP,并启用SSH远程访问。整个过程控制在30分钟内。

3.1 操作系统选型:Ubuntu vs Debian

做工业协议转换网关,操作系统选型其实没那么玄乎。我个人习惯用Ubuntu Server LTS版本,原因很简单:社区活跃,驱动全,遇到问题搜起来快。Debian当然更稳定,但它的软件包更新慢,有时候你需要的网卡驱动或者新内核特性,得自己折腾半天。

咱们这门课统一用Ubuntu Server 22.04 LTS。为什么是这个版本?

  • LTS支持到2027年——工业设备一跑就是好几年,你不想中途被迫升级系统吧?
  • 内核版本5.15——对主流工业网卡(Intel I210/I350、Realtek RTL8111)支持很好,不用额外装驱动。
  • 软件源稳定——Modbus工具、PROFINET协议栈依赖的库,apt直接装,省事。
对比项 Ubuntu Server 22.04 LTS Debian 11/12
内核版本 5.15(较新) 5.10(较保守)
软件包更新频率 中等,安全更新及时 慢,但极稳定
硬件驱动兼容性 好,尤其网卡 一般,老硬件没问题
社区支持 非常活跃 活跃但偏专业
适合场景 工业网关、边缘计算 服务器、嵌入式

我的建议:如果你是在现场部署,手头只有一台老旧的工控机,内存只有2GB,那可以考虑Debian。但咱们课程为了统一环境,都用Ubuntu。你学会了,换Debian也就是apt命令的区别。

3.2 操作系统安装实战

安装过程其实不复杂,但有几个坑我得提前跟你说。我曾经在一台研华工控机上装Ubuntu,结果装完发现网卡没驱动,折腾了俩小时才找到原因——BIOS里有个「网络堆栈」选项没开。

3.2.1 准备工作

  • 镜像下载:去Ubuntu官网下载ubuntu-22.04.3-live-server-amd64.iso
  • 制作启动盘:用Rufus(Windows)或dd命令(Linux)写入U盘
  • BIOS设置:
    • 关闭Secure Boot(否则第三方驱动加载不了)
    • 启动模式选UEFI(别选Legacy,除非你机器太老)
    • 开启Intel VT-x/AMD-V(后面跑虚拟化用)

3.2.2 安装步骤(精简版)

  1. 语言选择:选English,别选中文。终端下中文乱码够你喝一壶的。
  2. 键盘布局:默认English (US),除非你用的是德式键盘。
  3. 网络配置:这里先选DHCP自动获取,装完再改静态IP。别在安装界面纠结IP,容易卡住。
  4. 磁盘分区:我建议手动分区,给个参考方案:
    • /boot:1GB,ext4
    • /:20GB,ext4(系统够用)
    • /var:10GB,ext4(日志和数据库)
    • /opt:剩余全部,ext4(放你的协议转换程序和配置文件)
  5. 用户名和主机名:主机名我习惯用modbus-gw-01这种格式,一看就知道是干什么的。
  6. 安装OpenSSH server:这一步一定要勾选!很多人装完发现连不上,就是因为忘了装SSH。

注意:安装过程中会让你创建用户。别用root直接干活,创建一个普通用户,比如iotadmin,后面用sudo提权。这是安全底线。

3.3 网络配置:从DHCP到静态IP

装完系统重启,你会发现IP是DHCP自动分配的。这在实验室没问题,但到了现场,PLC和上位机都指着固定IP找你的网关呢。所以必须改成静态IP。

Ubuntu从18.04开始用Netplan管理网络,不再是以前的/etc/network/interfaces了。我第一次用Netplan也懵了一下,习惯就好。

3.3.1 查看当前网络状态

ip a
# 或者
ip addr show

你会看到类似enp2s0或ens33这样的接口名。记下来,后面要用。

3.3.2 配置Netplan

Netplan的配置文件在/etc/netplan/目录下,通常叫00-installer-config.yaml。

sudo nano /etc/netplan/00-installer-config.yaml

把内容改成这样(假设你的网卡叫enp2s0):

network:
  version: 2
  ethernets:
    enp2s0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 114.114.114.114

然后应用配置:

sudo netplan apply

避坑指南:YAML文件对缩进极其敏感,必须用空格,不能用Tab。我曾经因为一个空格没对齐,导致网络配置不生效,排查了半小时。建议用nano编辑,别用vi,vi的Tab默认是8个空格,容易乱。

3.3.3 验证网络连通性

ping -c 4 192.168.1.1    # 测试网关
ping -c 4 8.8.8.8        # 测试外网
ping -c 4 baidu.com      # 测试DNS解析

如果网关能通但外网不通,八成是DNS没配好。检查/etc/resolv.conf,确认nameserver地址正确。

3.4 SSH远程访问配置

网关装好了,网络通了,接下来你肯定不想每次都搬个显示器去现场操作吧?SSH就是你的远程遥控器。

3.4.1 检查SSH服务状态

sudo systemctl status ssh

如果显示active (running),恭喜你,安装时勾选的SSH已经自动启动了。如果没有,手动安装:

sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh

3.4.2 安全加固(必做)

默认的SSH配置太宽松了,直接暴露在公网上很危险。我建议至少做这几步:

  1. 禁止root直接登录:编辑/etc/ssh/sshd_config,找到PermitRootLogin,改成no。
  2. 修改默认端口:把Port 22改成Port 2222或别的端口,避开扫描器。
  3. 仅允许密钥登录:设置PasswordAuthentication no,然后用ssh-keygen生成密钥对。
# 在客户端生成密钥
ssh-keygen -t rsa -b 4096

# 把公钥复制到网关
ssh-copy-id -p 2222 iotadmin@192.168.1.100

重要提醒:修改SSH配置后,一定要先sudo systemctl restart ssh,然后不要关闭当前终端,另开一个窗口测试新配置能否连上。确认没问题再关。否则你把自己锁在外面,就得跑现场了——我干过这种事,大冬天跑机房,别提多酸爽。

3.5 本章知识结构图

下面这张图把咱们这一章的核心逻辑串起来了。你可以把它当作一个检查清单,部署时对照着来。

Linux基础环境搭建流程 1. 系统安装 Ubuntu Server 22.04 LTS 手动分区 /boot / /var /opt 勾选 OpenSSH Server 2. 网络配置 查看网卡:ip a 编辑 Netplan YAML 静态IP + DNS netplan apply 生效 3. SSH远程访问 检查 ssh 服务状态 禁止root + 改端口 密钥登录配置 重启服务 + 验证 验证清单:ping网关 → ping外网 → SSH登录 三个都通,基础环境就绪

3.6 常见问题与排障

最后,我把这些年遇到最多的几个问题列出来,你碰到了直接对照着查。

问题现象 可能原因 解决方法
安装时找不到硬盘 BIOS中SATA模式设为RAID 进BIOS改成AHCI模式
netplan apply报错 YAML缩进错误 用sudo netplan --debug apply查看具体错误行
SSH连不上,提示Connection refused SSH服务没启动,或防火墙拦截 sudo systemctl status ssh检查;sudo ufw allow 2222/tcp放行端口
SSH能连但密码错误 键盘布局不对,输错字符 安装时选English (US)布局;或通过IPMI/KVM用虚拟键盘输入
ping网关通,ping外网不通 DNS配置错误或网关没开NAT 检查/etc/resolv.conf;用traceroute 8.8.8.8看路由在哪断

我的经验:如果你在现场部署,手边最好带一个USB转串口模块和一根Console线。万一网络配置搞砸了,SSH连不上,你还能通过串口登录救急。别问我怎么知道的——有一次我在客户机房把网口配置写错了,重启后彻底失联,最后是靠Console线救回来的。

好了,到这步,你的Linux基础环境应该已经跑起来了。系统装好了,网络配通了,SSH也能远程连了。接下来咱们就可以往里面装Modbus和PROFINET的工具链了。记住,地基打得牢,后面盖楼才稳当。