板端修改静态IP

开发板设置静态 IP 并通过 SSH 连接

下面以电脑和开发板通过网线直连为例:

  • 开发板:192.168.123.100/24
  • 电脑:192.168.123.101/24
  • 直连时网关和 DNS 留空

一、在开发板本地确认有线网口

bash 复制代码
ip -br link

作用:列出板端网口。带 LOWER_UP 的接口表示物理链路已建立。

bash 复制代码
cat /sys/class/net/eth0/carrier
cat /sys/class/net/eth1/carrier

作用:确认物理网口状态。输出 1 表示网线已连接,输出 0 表示无物理链路。

bash 复制代码
nmcli device status
nmcli connection show

作用:查看 NetworkManager 管理的设备、已有连接名和当前连接状态。

后续示例假设实际接通的网口是 eth1。如果检测到的是 eth0,将命令中的 eth1 改为 eth0。

二、永久设置开发板静态 IP

方法 A:新建专用连接

bash 复制代码
sudo nmcli connection add type ethernet ifname eth1 con-name static-board ipv4.method manual ipv4.addresses "192.168.123.100/24" ipv6.method disabled

作用:为 eth1 创建名为 static-board 的永久静态 IPv4 配置。

bash 复制代码
sudo nmcli connection modify static-board ipv4.gateway ""
sudo nmcli connection modify static-board ipv4.dns ""
sudo nmcli connection modify static-board connection.autoconnect yes

作用:直连电脑时清空网关和 DNS,并设置开机自动连接。

bash 复制代码
sudo nmcli connection up static-board

作用:立即启用静态 IP 配置。

方法 B:修改已有连接

先用以下命令找到实际连接名:

bash 复制代码
nmcli connection show

假设连接名为 Wired connection 1:

bash 复制代码
sudo nmcli connection modify "Wired connection 1" connection.interface-name eth1
sudo nmcli connection modify "Wired connection 1" ipv4.method manual
sudo nmcli connection modify "Wired connection 1" ipv4.addresses "192.168.123.100/24"
sudo nmcli connection modify "Wired connection 1" ipv4.gateway ""
sudo nmcli connection modify "Wired connection 1" ipv4.dns ""
sudo nmcli connection modify "Wired connection 1" connection.autoconnect yes
sudo nmcli connection up "Wired connection 1" ifname eth1

作用:把已有连接永久绑定到 eth1,设置静态 IP,并立即启用。

方法 A 和方法 B 选择一种即可,不要同时创建多个自动连接配置。

三、关闭不用的连接配置

bash 复制代码
nmcli -f NAME,AUTOCONNECT,DEVICE connection show

作用:查看哪些连接会自动启动,以及它们绑定的网口。

bash 复制代码
sudo nmcli connection modify "Wired connection 2" connection.autoconnect no
sudo nmcli connection modify "Wired connection 3" connection.autoconnect no

作用:关闭不用的旧配置自动连接,防止抢占网口或反复提示 Connect failed。连接名应按实际输出修改。

bash 复制代码
sudo ip addr flush dev eth0
sudo ip link set eth0 down

作用:当 eth1 是工作网口时,清除另一个网口的临时地址并关闭它。不要在工作网口上执行。

四、验证板端配置

bash 复制代码
ip -4 addr show eth1
ip route get 192.168.123.101
nmcli device status

作用:确认 eth1 拥有 192.168.123.100/24,并确认访问电脑时使用正确网口。

bash 复制代码
sudo reboot

作用:重启开发板,验证静态地址和自动连接配置是否能够永久生效。

重启后再次检查:

bash 复制代码
ip -4 addr show eth1

五、永久设置 Ubuntu 电脑端有线 IP

在电脑端执行:

bash 复制代码
ip -br link
nmcli device status

作用:查找电脑的有线网卡名称。下面假设电脑有线网卡名为 enp8s0。

bash 复制代码
sudo nmcli connection add type ethernet ifname enp8s0 con-name board-direct ipv4.method manual ipv4.addresses "192.168.123.101/24" ipv6.method disabled
sudo nmcli connection modify board-direct ipv4.gateway ""
sudo nmcli connection modify board-direct ipv4.dns ""
sudo nmcli connection modify board-direct connection.autoconnect yes
sudo nmcli connection up board-direct

作用:为电脑创建永久的开发板直连配置,并立即启用。

bash 复制代码
ip -4 addr show enp8s0
ip route get 192.168.123.100

作用:确认电脑地址为 192.168.123.101/24,访问板端时使用有线网卡。

六、板端启用 SSH

在开发板本地执行:

bash 复制代码
sudo passwd cat

作用:给板端用户 cat 设置 SSH 登录密码。输入密码时终端不会显示字符。

bash 复制代码
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo systemctl status ssh --no-pager

作用:安装 SSH 服务、设置开机自动启动并检查运行状态。

如果板端启用了 UFW:

bash 复制代码
sudo ufw allow OpenSSH

作用:允许 SSH 连接通过防火墙。

七、电脑端测试并登录

bash 复制代码
ping -c 4 192.168.123.100

作用:测试电脑与开发板之间的 IP 连通性。

bash 复制代码
ssh cat@192.168.123.100

作用:通过 SSH 登录开发板。

八、同一 IP 更换开发板后的 SSH 指纹处理

先在开发板本地查看当前主机指纹:

bash 复制代码
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

作用:显示当前开发板的 ED25519 主机指纹,供电脑端核对。

确认指纹属于当前开发板后,在电脑端执行:

bash 复制代码
ssh-keygen -f ~/.ssh/known_hosts -R "192.168.123.100"
ssh cat@192.168.123.100

作用:删除该 IP 对应的旧 SSH 主机密钥,然后重新记录当前开发板的密钥。

九、临时恢复连接

当 NetworkManager 配置暂时有问题时,可在开发板本地执行:

bash 复制代码
sudo ip addr flush dev eth1
sudo ip addr add 192.168.123.100/24 dev eth1
sudo ip link set eth1 up

作用:立即给 eth1 配置临时地址以恢复连接;重启后失效。

注意事项

  • carrier=0 或 NO-CARRIER 表示物理链路没有建立,修改 IP 不能解决网线或网口问题。
  • 同一个静态 IP 只能配置在一个实际工作的网口上。
  • 确保地址写成 192.168.123.100,不要误写成 192.16.123.100。
  • 直连电脑时不填写网关;连接路由器时,网关应填写路由器地址,并确保静态 IP 未被其他设备占用。
  • 172.17.0.1 通常是 Docker 内部网络地址,不能作为电脑连接板端的地址。
相关推荐
CS_Zero1 小时前
解决模型开发板ping不通模型终端设备问题
linux·网络
程序员夏洛1 小时前
TCP 是用来解决什么问题?
java·网络协议·http·https
修船大队长1 小时前
启动阶段 KL15 未接通时触发报文超时监控
运维·服务器·网络
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》项目背景、目标及名词解释
服务器·网络·c++·语言模型
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】ChatServer接口设计规范
网络·c++·人工智能·学习·大模型·设计规范
程序员-Benothing2 小时前
Linux网络排错命令:ping、traceroute、mtr、dig、nslookup
linux·运维·网络
浩腾数字多媒体2 小时前
展厅中控源头厂家怎么选要看哪些核心指标?
网络·python
RD_daoyi2 小时前
外贸独立站从0到1:平台选择 + 建站流程 + 新手避坑
大数据·服务器·网络·人工智能·搜索引擎·职场和发展
AbandonForce2 小时前
Linux 网络:序列化与反序列化
linux·运维·网络