这篇教程将详细说明如何在裸金属服务器初始化时,通过 ISO 挂载并使用 Debian-network-tui 图形化快速完成网络配置,避免手工编辑 /etc/network/interfaces 的繁琐与错误。

还能自动化配置apt源、DNS、SSH服务+公钥导入

  • 适用于Debian 11-13
  • 使用Go构建,单二进制文件无需任何依赖

界面截图

主菜单

修改网卡界面

使用

一、工具简介

Debian-network-tui 是一个基于 TUI 的网络配置工具,专为 Debian 11–13 设计,功能类似 nmtui,但直接管理 ifupdown 的配置文件。
主要特性:

  • 列出全部系统网卡(不仅限于配置文件中已有项)
  • 编辑连接:新建 / 修改 / 删除 iface
  • 连接类型:EthernetVLANBond
  • 可在以太网或 Bond 上建 VLAN(如 bond0.100
  • Bond:从已 UP 网卡勾选 slaves,支持模式 / miimon / LACP;自动为 slave 写入 manual + bond-master
  • VLAN:从已 UP 网卡/bond 选择 Parent,VLAN ID 范围 2–4094
  • IPv4:dhcp / static / manual / disabled(新建默认 disabled)
  • IPv6:disabled / dhcp / static / auto
  • 独立编辑 DNS:/etc/resolv.conf
  • 一键用本地配置文件覆盖 /etc/resolv.conf
  • 一键执行:覆盖 DNS + 清空/应用 apt 源 + 安装 ifenslave/vlan + 配置 SSH(带实时日志)
  • autoallow-hotplug
  • 激活 / 停用:ifup / ifdown
  • 重启网络服务
  • 清空全部网卡配置(保留 lo,先备份)
  • 本地安装 ifenslave / vlan.deb
  • 清空 / 应用 apt 源(从程序目录读取配置文件)
  • 配置 SSH:安装 openssh-server、允许 root 密钥登录、导入公钥
  • 保存前自动备份;空闲 65 秒无操作自动退出

不依赖 NetworkManager,适合服务器与最小化安装。


二、安装方式

1. 从Github 下载

GitHub Releases 下载:

https://github.com/Songxwn/Debian-network-tui/releases

1
2
3
# amd64 示例(版本号按 Release 实际修改)
tar -xzf debian-network-tui-v0.3.6-linux-amd64.tar.gz
sudo install -m 755 debian-network-tui-v0.3.6-linux-amd64 /usr/local/bin/debian-network-tui

2. 从源码构建 (需要Go和make环境)

1
2
3
4
git clone https://github.com/Songxwn/Debian-network-tui.git
cd Debian-network-tui
go mod tidy
make build # 输出 bin/debian-network-tui

交叉编译:

1
make cross   # 生成 amd64/arm64 二进制

三、运行与配置

基本运行

1
sudo debian-network-tui

可指定测试配置文件路径:

1
sudo INTERFACES_FILE=/tmp/interfaces debian-network-tui

空闲超时默认 65 秒,可用环境变量调整(0 关闭):

sudo IDLE_TIMEOUT_SEC=120 debian-network-tui

界面操作

  • 主菜单:上下选择,Enter 确认,q 退出
  • 连接列表a 添加,d 删除,Enter 编辑,Esc 返回
  • 编辑表单:Tab 切换字段,左右键切换选项,Ctrl+S 保存,Esc 取消
  • 确认操作y / n

主菜单

  1. Edit a connection — 编辑网卡配置
  2. Edit DNS (/etc/resolv.conf) — 编辑 DNS(Ctrl+O 可从本地文件覆盖)
  3. Apply DNS from file (overwrite) — 用二进制同目录的 resolv.conf / dns.conf 等覆盖系统 DNS(先备份)
  4. Activate a connectionifup
  5. Deactivate a connectionifdown
  6. Restart networking — 重启网络服务
  7. Clear all connections — 清空网卡配置(保留 lo)
  8. Install ifenslave/vlan (.deb) — 安装本地 deb
  9. Clear apt sources — 清空 apt 源
  10. Apply apt sources from file — 从文件应用 apt 源
  11. Configure SSH server (root key) — 配置 SSH 与 root 密钥登录
  12. One-shot setup (DNS, apt, bond/vlan, SSH) — 按顺序一键执行上述文件化步骤,并显示实时日志(需本地文件齐全)
  13. Quit — 退出

本地文件约定(与二进制同目录)

一键部署(菜单 12)所需文件: DNS + APT + Bond/VLAN deb + SSH 公钥(见下方各项)。

DNS(菜单 3 / 12):

  • resolv.conf / dns-resolv.conf / dns.conf → 覆盖 /etc/resolv.conf
  • 示例:examples/resolv.conf

Bond/VLAN 包(菜单 8 / 12):

  • ifenslave_*.deb
  • vlan_*.deb

APT 源(菜单 9–10 / 12):

  • sources.listapt-sources.list/etc/apt/sources.list
  • *.list / *.sources/etc/apt/sources.list.d/
  • 示例:examples/sources.list

SSH(菜单 11 / 12):

  • openssh-server_*.deb(可选,没有则走 apt)
  • ssh-root.conf(可选):
1
PubkeyFile=root.pub
  • root.pub:OpenSSH 公钥内容
    示例:examples/ssh-root.confexamples/root.pub

SSH 配置内部逻辑说明

菜单项 Configure SSH server (root key) 确认后,按以下顺序执行(实现见 internal/sshsetup):

1. 安装 openssh-server

  1. 取当前可执行文件所在目录(解析符号链接后)。
  2. 扫描该目录下文件名包含 openssh-server(或同时包含 opensshserver)的 .deb
  3. 若找到本地包apt-get install -y --allow-downgrades <deb路径...>DEBIAN_FRONTEND=noninteractive)。
  4. 若未找到apt-get install -y openssh-server(依赖当前 apt 源可用)。

2. 解析公钥来源

优先读取同目录下的 ssh-root.conf(可选):

配置键(不区分大小写) 含义
PubkeyFile / Pubkey / PublicKeyFile 公钥文件路径(相对程序目录或绝对路径)

未配置或文件不存在时,按顺序尝试:

  1. PubkeyFile 指定路径
  2. root.pub
  3. id_rsa.pub
  4. id_ed25519.pub
  5. authorized_keys

任一存在即采用;全部缺失则报错退出(不继续改 sshd)。

公钥文件中:跳过空行与 # 注释;仅接受以 ssh-rsassh-ed25519ecdsa-sha2-* 等类型开头的行。

3. 配置 sshd(root 仅密钥登录)

写入 drop-in(不直接改主配置,便于卸载/覆盖):

路径:/etc/ssh/sshd_config.d/99-debian-network-tui-rootkey.conf

1
2
3
PermitRootLogin prohibit-password
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

含义:

  • prohibit-password:允许 root 远程登录,但禁止密码,只接受公钥。
  • 依赖 Debian 默认 Include /etc/ssh/sshd_config.d/*.conf

4. 导入 root 公钥

  1. 确保目录 /root/.ssh 存在,权限 700
  2. 读取已有 /root/.ssh/authorized_keys,按完整行去重。
  3. 将新公钥追加写入(不删除原有密钥)。
  4. 文件权限设为 600

5. 重启服务

依次尝试:

  1. systemctl restart ssh(Debian 单元名)
  2. 失败则 systemctl restart sshd
  3. 无 systemctl 时:service ssh restart

任一步失败会返回错误(此时包与配置可能已写入,需人工检查)。

安全提示

  • 请确认 root.pub 中是你自己的公钥,误导入他人密钥等于开放 root。
  • prohibit-password 后 root 不能再用密码登录;请先保证密钥可用或保留其他管理员账号。
  • 若系统使用云镜像自定义 sshd,请确认 sshd_config.d 会被加载。

四、常见操作

  1. 添加静态 IPv4 配置

    • 选择 Edit a connection → 输入 IP、掩码、网关、DNS
    • 保存后配置示例:
      1
      2
      3
      4
      5
      6
      7
      # Managed by debian-network-tui: eth0
      allow-hotplug eth0
      iface eth0 inet static
      address 192.168.1.10
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-nameservers 8.8.8.8 1.1.1.1
  2. 激活/停用连接

    • 主菜单选择 Activate a connection → 调用 ifup <iface>
    • 停用则执行 ifdown <iface>
  3. 注意事项

    • 编辑后需执行 ifup <iface>systemctl restart networking
    • 通过 SSH 修改时,若停用当前网卡可能导致断连
    • interfaces.d/ 中的配置会合并到主文件,需手动清理旧片段

五、适用场景

  • 裸金属服务器初始化:ISO 挂载后快速配置网络
  • 边缘节点部署:无 GUI 环境下的高效交互
  • 实验环境:快速切换不同网络方案

六、总结

在裸金属服务器开局配置场景中,Debian-network-tui 提供了一个高效、直观的解决方案。通过 ISO 挂载即可运行,避免了手工编辑的复杂性,非常适合批量部署和远程环境。

PS:将软件本体和配置文件封装为ISO,推荐使用软碟通 > https://www.ultraiso.net/

运维技术交流群

发送邮件到 ➡️ [email protected]

或者关注WX公众号:网工格物

微信扫码

博客(最先更新)

https://songxwn.com/