开发板设置静态 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 内部网络地址,不能作为电脑连接板端的地址。