1. Jetson Nano SSH连接基础配置
刚拿到Jetson Nano开发板时,最让人头疼的就是那块小小的屏幕和接不完的外设。作为一个常年和嵌入式设备打交道的开发者,我强烈建议你尽早掌握SSH远程连接技能。Jetson Nano出厂时已经预装了SSH服务并默认开启,这为我们省去了不少配置时间。
首先需要确认你的开发板和主机在同一局域网内。我习惯用手机热点搭建临时网络,这样笔记本和Nano都能连接,避免了路由器配置的麻烦。连接成功后,在Nano终端输入ifconfig查看IP地址,你会看到类似192.168.x.x的地址。记下这个地址,它就是你的Nano在网络中的"门牌号"。
验证SSH服务是否正常运行很简单:
sudo systemctl status sshd如果看到"active (running)"字样,说明服务已经就绪。万一遇到服务未启动的情况,执行以下命令即可:
sudo systemctl enable sshd sudo systemctl start sshd第一次连接时可能会遇到主机验证提示,输入"yes"即可。之后每次连接只需要输入密码,默认用户是"nvidia",密码也是"nvidia"。建议首次登录后立即修改密码:
passwd2. 双向SSH连接实战技巧
很多教程只讲了从主机连接Nano,但实际开发中我们经常需要反向操作。比如当Nano接了大屏显示器时,直接在Nano上操作反而更方便。这时就可以从Nano SSH连接回主机,形成双向通道。
假设你的主机IP是192.168.1.100,用户名为"dev",那么在Nano终端输入:
ssh dev@192.168.1.100首次连接同样需要确认主机指纹。成功登录后,你就可以在Nano上直接操作主机文件了,这对调试特别有用。
我遇到过一个典型场景:在主机上编译好的ROS包需要快速部署到Nano测试。传统做法是用U盘来回拷贝,效率极低。有了双向SSH,可以直接在Nano上拉取主机文件:
scp dev@192.168.1.100:~/catkin_ws/devel/lib/* ~/catkin_ws/devel/lib/3. 高效文件传输方案
SCP命令是SSH自带的文件传输工具,虽然简单但非常实用。经过多次项目实战,我总结出几个高效使用技巧:
- 大文件传输:添加
-C参数启用压缩,能显著提升传输速度
scp -C large_file.zip nvidia@192.168.1.50:~/downloads/- 保留文件属性:使用
-p参数保持修改时间、权限等信息
scp -p config.txt nvidia@192.168.1.50:~/config/- 限速传输:当网络繁忙时,用
-l参数限制带宽(单位Kbit/s)
scp -l 800 video.mp4 nvidia@192.168.1.50:~/videos/对于需要频繁同步的目录,建议使用rsync代替scp。rsync的增量传输机制可以极大节省时间:
rsync -avz ~/project nvidia@192.168.1.50:~/workspace/4. ROS开发中的文件传输实战
在ROS机器人开发中,经常需要在主机和Nano之间同步工作空间。经过多次踩坑,我总结出一套可靠的工作流程:
- 在主机上完整编译工作空间
catkin_make -DCMAKE_BUILD_TYPE=Release- 同步整个devel目录到Nano
scp -r ~/catkin_ws/devel nvidia@192.168.1.50:~/catkin_ws/- 选择性同步launch文件和配置文件
scp ~/catkin_ws/src/robot_bringup/launch/* nvidia@192.168.1.50:~/catkin_ws/src/robot_bringup/launch/特别注意:ROS节点在Nano上运行时可能需要调整参数。我习惯在主机上维护一套开发用参数,在Nano上保留部署用参数,通过不同文件名区分。
5. SSH免密登录配置详解
每次输入密码确实烦人,配置免密登录后效率能提升不少。但要注意安全风险,建议只在可信网络环境下使用。
具体操作分三步走:
- 在主机生成密钥对(如果已有可跳过)
ssh-keygen -t rsa -b 4096- 将公钥复制到Nano
ssh-copy-id -i ~/.ssh/id_rsa.pub nvidia@192.168.1.50- 测试免密登录
ssh nvidia@192.168.1.50如果还是提示输入密码,检查Nano上~/.ssh/authorized_keys文件权限是否为600:
chmod 600 ~/.ssh/authorized_keys6. 常见问题排查指南
遇到连接问题时,可以按照以下步骤排查:
- 网络不通:先用ping测试基础连接
ping 192.168.1.50- SSH服务未响应:检查Nano上的服务状态
sudo netstat -tulnp | grep 22- 认证失败:查看Nano上的auth日志
sudo tail -f /var/log/auth.log- 防火墙拦截:临时关闭防火墙测试
sudo ufw disable- 配置文件错误:检查
/etc/ssh/sshd_config中的关键参数
PermitRootLogin no PasswordAuthentication yes PubkeyAuthentication yes记住修改配置后要重启服务:
sudo systemctl restart sshd7. 高级技巧与安全建议
对于需要长期运行的远程任务,建议使用tmux或screen保持会话。我常用的工作流程是:
- 在Nano上创建tmux会话
tmux new -s remote_work- 在会话中启动任务
roslaunch robot_bringup startup.launch断开连接(不影响任务运行) 按Ctrl+B,然后按D
重新连接查看进度
tmux attach -t remote_work安全方面,强烈建议:
- 修改默认SSH端口(编辑
/etc/ssh/sshd_config中的Port项) - 禁用root远程登录
- 使用fail2ban防止暴力破解
- 定期更新系统和SSH软件包
这些配置看似麻烦,但能有效防止设备被入侵。我在一个商业项目中就因为疏忽了安全配置,导致Nano被挖矿程序感染,教训深刻。