2. Jetson设备远程接入基础

Jetson 设备在批量运维场景中通常不会连接显示器与键盘,而是以“无头”方式部署在机架、机器人底盘或边缘机柜中。因此,能否在设备首次上电时建立一条可靠的接入通道,直接决定了后续批量管理能否展开。本节围绕四条接入路径展开:SSH 网络登录、串口控制台、USB 网络共享(USB Device Mode)以及首次无头初始化配置,并说明它们各自适用的阶段与判断依据。

一、四条接入路径的定位

这四种方式并非互相替代,而是覆盖设备生命周期的不同阶段。串口控制台在设备“还没有 IP、还没有系统账号”时就能工作,是首次上电和故障恢复的兜底通道;USB 网络共享让一台尚未接入局域网、也没有显示器的 Jetson 通过一根 USB 线获得一个可登录的私有网段;SSH 是设备进入正常网络后日常运维与批量下发的主力通道;无头初始化配置则是把“首次开机向导”从交互式界面转化为可脚本化的预置流程,使设备在无人干预下自动完成账号、主机名、网络与 SSH 服务的设定。

Jetson 无头接入路径与阶段对应关系 首次上电 系统未联网 网络就绪 批量运维 串口控制台 UART / micro-USB 115200 8N1 无 IP 也可登录 用途:首启 / 救援 USB 网络共享 USB Device Mode l4tbr0 / 192.168.55.1 主机侧 192.168.55.100 用途:无局域网直连 SSH 远程登录 TCP 22 / 密钥认证 scp / rsync 传文件 ssh -J 跳板转发 用途:日常运维主力 无头初始化 预置账号 主机名 / 网络 自动开启 SSH 用途:免交互首配 主机侧(PC / 服务器) USB 虚拟网卡 192.168.55.100 串口终端工具 minicom / PuTTY SSH 客户端:ssh nvidia@<设备IP> 密钥认证 / 端口转发 / 批量脚本入口 Jetson 设备侧 调试串口 UART ttyTHS0 / 115200 USB Device 接口 l4tbr0 / 192.168.55.1 sshd 服务:监听 22 端口 /etc/ssh/sshd_config 控制认证方式 注:USB 网络共享与串口可同时存在,SSH 依赖网络层就绪

二、串口控制台:最底层的接入方式

Jetson 开发板通常引出一路调试串口(如 ttyTHS0),参数为 115200 波特率、8 数据位、无校验、1 停止位(8N1)。在主机侧使用 minicom、PuTTY 或 screen 连接后,可以看到 U-Boot 与内核启动日志,并在系统启动完成后获得登录提示符。串口不依赖网络协议栈,因此当设备 IP 配置错误、SSH 服务未启动或系统无法正常引导时,它仍是唯一可用的入口。

# Linux 主机侧连接串口(示例设备为 /dev/ttyUSB0)
sudo screen /dev/ttyUSB0 115200
# 或使用 minicom
sudo minicom -D /dev/ttyUSB0 -b 115200

需要注意,串口登录默认使用系统账号,若首次初始化尚未创建用户,可能只能进入 U-Boot 或恢复模式。因此串口更适合作为“观察启动过程”和“救援”的手段,而不是日常批量操作通道。

三、USB 网络共享:一根线建立私有网段

Jetson 的 USB Type-C 接口在 Device Mode 下会虚拟出一张网卡。设备侧默认地址通常为 192.168.55.1,主机侧为 192.168.55.100,二者构成一个点对点私有网段。只要主机安装了对应的 USB 网络驱动(Linux 下通常为 cdc_ncm 或 rndis),即可直接通过该地址 SSH 登录设备,无需接入任何局域网。

# 主机侧确认虚拟网卡已出现
ip addr show | grep 192.168.55
# 登录设备
ssh nvidia@192.168.55.1

这条路径的价值在于:设备出厂后第一次上电、尚未配置 Wi-Fi 或有线网络时,运维人员只需一根 USB 线即可完成账号创建、网络配置与 SSH 密钥下发。若主机侧未自动获取地址,可手动为虚拟网卡配置 192.168.55.100/24,再尝试连接。

四、SSH:批量运维的主力通道

当设备接入局域网并获得稳定 IP 后,SSH 成为日常操作的核心。建议在首次配置时就完成三件事:创建非默认账号、禁用密码登录改用密钥认证、确认 sshd 监听端口与防火墙策略。密钥认证不仅更安全,也是后续 Ansible、批量脚本免交互执行的前提。

# 生成密钥对(主机侧)
ssh-keygen -t ed25519 -C "jetson-fleet"
# 下发公钥到设备
ssh-copy-id -i ~/.ssh/id_ed25519.pub nvidia@192.168.1.50
# 验证免密登录
ssh -o BatchMode=yes nvidia@192.168.1.50 "hostname && uname -r"

若设备位于 NAT 之后,可通过跳板机转发:ssh -J user@jump-host nvidia@192.168.1.50。批量场景中,建议为每台设备维护固定的主机名与 IP 映射,避免依赖 mDNS 解析带来的不确定性。

五、首次无头初始化配置

Jetson 首次启动会进入 oem-config 交互向导,要求设置语言、时区、用户名、密码与网络。无头场景下无法完成这些交互,因此需要预置配置。常见做法是在刷机阶段通过 l4t_create_default_user.sh 脚本预创建默认用户,或在根文件系统中预置 oem-config 的应答文件,使首次启动自动跳过向导。

# 在刷机前预创建默认用户(示例)
sudo ./l4t_create_default_user.sh -u nvidia -p nvidia -n jetson-orin-01 -a
# 刷机后设备首次启动即具备该账号,并默认开启 SSH

初始化完成后,应通过串口或 USB 网络共享登录,检查以下项目:主机名是否为预期值、网络接口是否获取到 IP、sshd 是否处于 active 状态、默认账号是否可登录。确认无误后,再切换到局域网 SSH 进行后续批量配置。

首次无头初始化建议保留串口连接直到确认 SSH 可用。若初始化后无法登录,优先检查:设备是否真正进入系统(串口有登录提示符)、USB 虚拟网卡是否被主机识别、sshd 是否因缺少主机密钥而启动失败。

六、接入路径的选择判断

场景首选通道判断依据
设备首次上电,无系统账号串口控制台能看到启动日志与登录提示符
设备未接入局域网USB 网络共享主机出现 192.168.55.x 网卡
设备已联网,需批量操作SSHping 通且 22 端口可连
系统无法引导或网络配置错误串口控制台SSH 与 USB 网络均不可达

实际运维中,这四条路径往往组合使用:先用串口确认启动,再用 USB 网络共享完成首次账号与网络配置,随后切换到 SSH 进行日常管理,并通过无头初始化脚本把上述过程固化为可重复的批量流程。理解每条通道的适用边界,是后续设备发现、批量下发与远程排障的基础。