Debian 13 配置静态 IP、apt 更新、SSH 远程连接遇到的一些问题

在虚拟机中安装 Debian 13后,默认使用 DHCP 动态获取 IP 地址。为了便于管理,需要将其设置为固定 IP。然而在设置静态 IP 后,执行 apt update 时遇到了 IPv6 网络不可达的问题,同时系统未安装 SSH 服务,无法远程管理。

本文将完整记录从配置静态 IP、修复 apt 更新问题,到安装并开启 SSH 服务(允许 root 登录)的全过程。


一、配置静态 IP

1.1 查看当前网络状态

首先确认网卡名称和当前 IP 信息:

ip addr show

输出示例:

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> ... state UP ...
    inet 192.168.1.220/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33

记下:

  • 网卡名称:ens33
  • 当前 IP:192.168.1.220(动态获取)
  • 子网掩码:/24(即 255.255.255.0)
  • 网关地址:通常为 192.168.1.1(可通过 ip route 或 ping 测试确认)

1.2 确认网络管理方式

检查当前使用哪个网络管理服务:

systemctl status NetworkManager   # 查看 NetworkManager 是否活跃
systemctl status systemd-networkd # 查看 systemd-networkd 是否活跃

输出显示 NetworkManager 为 active (running),而 systemd-networkd 为 inactive (dead),因此网络由 NetworkManager 管理。

1.3 查看 NetworkManager 中的连接名称

nmcli connection show

输出示例:

NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  0d387a93-9655-461b-87e7-ec96ebe93b9b  ethernet  ens33  
lo                  0c5f3d69-16c0-4ab3-9b92-ad86800b105d  loopback  lo     

记下有线连接的名称:Wired connection 1

1.4 修改为静态 IP

使用 nmcli 将连接修改为手动(静态)配置:

nmcli connection modify "Wired connection 1" \
  ipv4.method manual \
  ipv4.addresses 192.168.1.220/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 8.8.4.4"

1.5 重新激活连接

nmcli connection up "Wired connection 1"

输出示例:

连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)

1.6 验证静态 IP 配置

ip addr show ens33

此时 inet 行不再有 dynamic 字样,且 valid_lft 变为 forever

inet 192.168.1.220/24 brd 192.168.1.255 scope global noprefixroute ens33
    valid_lft forever preferred_lft forever

测试网络连通性:

ping -c 4 192.168.1.1    # 网关
ping -c 4 8.8.8.8        # 外网 IP
ping -c 4 www.baidu.com  # 域名解析

二、关于apt更新时的网络不可达问题

2.1 问题现象

执行 apt update 时出现大量 IPv6 连接超时错误:

错误:3 http://security.debian.org/debian-security trixie-security InRelease
  无法发起与 security.debian.org:80 (2a04:4e42::644) 的连接。 - connect (101: 网络不可达)
警告:无法下载 http://security.debian.org/debian-security/dists/trixie-security/InRelease

虽然能 ping 通 8.8.8.8,但 apt 访问安全源总是失败。

2.2 问题定位

检查系统 IPv6 禁用状态:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

返回 0 表示 IPv6 未禁用。再通过 nslookup 查看域名解析:

nslookup security.debian.org

输出中包含了 IPv6 地址(如 2a04:4e42:600::644),但当前网络环境不支持 IPv6,导致连接超时。

2.3 解决方案:禁用 IPv6

临时禁用(立即生效,重启后恢复):

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

永久禁用(重启后依然生效):

echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf
sysctl -p   # 使配置立即生效

2.4 验证修复

再次执行 apt update

apt update

输出应恢复正常,不再报 IPv6 错误:

命中:1 http://security.debian.org/debian-security trixie-security InRelease
命中:2 http://mirrors.163.com/debian trixie InRelease 
命中:3 http://mirrors.163.com/debian trixie-updates InRelease

三、安装并配置 SSH 服务

3.1 检查 SSH 服务状态

systemctl status ssh

若提示 Unit ssh.service could not be found,则未安装。

3.2 安装 OpenSSH 服务器

apt install -y openssh-server

安装过程中会自动生成主机密钥(RSA、ECDSA、ED25519),并创建 sshd 用户。

3.3 允许 root 登录

默认配置禁止 root 使用密码登录。编辑 SSH 配置文件:

nano /etc/ssh/sshd_config

找到以下行:

#PermitRootLogin prohibit-password

将其修改为:

PermitRootLogin yes

保存后重启 SSH 服务:

systemctl restart ssh

3.4 设置开机自启并验证状态

systemctl enable ssh
systemctl status ssh

输出应包含 active (running),并显示监听在 0.0.0.0:22::22

四、测试 SSH 远程连接

在宿主机(或其他内网设备)上执行:

ssh root@192.168.1.220

首次连接会提示确认主机指纹,输入 yes,然后输入 root 密码即可登录成功。

五、完整操作命令汇总

# ---------- 配置静态 IP ----------
# 查看网卡信息
ip addr show
# 查看网络管理方式
systemctl status NetworkManager
systemctl status systemd-networkd
# 查看 NetworkManager 连接
nmcli connection show
# 修改为静态 IP
nmcli connection modify "Wired connection 1" \
  ipv4.method manual \
  ipv4.addresses 192.168.1.220/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 8.8.4.4"
# 激活连接
nmcli connection up "Wired connection 1"
# 验证
ip addr show ens33
ping -c 4 192.168.1.1

# ---------- 修复 apt 更新 ----------
# 检查 IPv6 状态
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# 永久禁用 IPv6
echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf
sysctl -p
# 测试更新
apt update

# ---------- 安装并配置 SSH ----------
# 安装 SSH 服务
apt install -y openssh-server
# 允许 root 登录
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 重启服务
systemctl restart ssh
# 设置开机自启
systemctl enable ssh
# 查看状态
systemctl status ssh

# ---------- 远程连接测试 ----------
# 在宿主机执行
ssh root@192.168.1.220

通过本文的步骤,完成了以下工作:

  • 配置静态 IP:使用 NetworkManager 的 nmcli 工具将动态 IP 改为固定 IP,无需重启系统。
  • 修复 apt 更新:通过禁用系统 IPv6,解决了因 IPv6 路由不可达导致的 apt update 失败。
  • 开启 SSH 远程连接:安装 openssh-server,修改配置允许 root 登录,并设置开机自启。

整个过程适用于 Debian 13(trixie)的内网环境,无需考虑防火墙和密钥认证等安全措施。按照上述命令顺序执行即可顺利实现固定 IP 和 SSH 远程管理。

注意:本记录基于纯内网环境,忽略了所有安全配置。若在公网环境使用,请务必加强 SSH 安全设置(如禁用 root 密码登录、使用密钥认证、更改端口、配置防火墙等)。