当前位置: 首页 > news >正文

jetson orin nano super AI模型部署之路(十)使用frp配置内网穿透,随时随地ssh到机器

为什么要内网穿透?

我们使用jetson设备时,一般都是在局域网内的电脑去ssh局域网内的jetson设备,但是这种ssh或者VNC仅限于局域网之间的设备。

如果你出差了,或者不在jetson设备的局域网内,想再去ssh或者VNC我们的jetson设备,就需要对jetson设备做内网穿透。内网穿透后,我们不管在哪里,主要有网络,就可以直接ssh或者VNC到我们处在局域网内的jetson设备。

一:frp简介

frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

市面上一些主流的内网穿透工具有:Ngrok,Natapp,花生壳,Ssh、autossh,Frp,Lanproxy,Spike。

使用frp只需要自己有一台公网IP的云主机即可,成本相对很低。我自己使用的是华为云的38元/年的机器,很便宜。而且frp速度快。

二:安装frp

1:准备

一台公网服务器(配置无要求网络稳定就行),服务器端,如公网IP:123.32.12.32。

内网客户端(就是我们的jetson设备),客户端,如内网IP:192.168.152.103。

2.下载和安装frp

2.1 linux x86公网服务器安装和配置

对于linux x86平台的公网服务器,需要下载amd64平台版本,可以使用wget下载。

# 下载
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
cd frp_0.44.0_linux_amd64/

进入文件夹,有两个名称文件frpc(c结尾代表client)和frps(s结尾代表server),分别是服务端程序和服务端配置程序。在这里我们只需要使用frps服务器端文件即可。

下面配置服务器端

这里是为服务端配置frp 只关注frps和frps.ini即可,原始最简单配置为。

cat frps.ini
[common]
#隧道通道,服务器和客户端通过此端口通讯
bind_port = 7000

对于服务器端,这样就可以用。先不配置其他的。

接下来要启动服务器端,在启动之前,要开启对应端口的防火墙,这里我们要开启7000和6000两个端口。这个需要从云服务厂商的UI界面上开启,例如我的华为云界面。

启动服务器端

./frps -c frps.ini

可以看到已经开启成功。

2.2 jetson arm64平台内网设备安装和配置

因为jetson设备是arm64架构,和服务器的x86_64不一样,因此我们这里也要下载arm64版本的frp。

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_arm64.tar.gz
# 解压
tar -zxvf frp_0.44.0_linux_arm64.tar.gz
cd frp_0.44.0_linux_arm64

jetson作为frp的客户端,在jetson上要使用frpc的程序。
下面只需要修改server_addr就可以

vim frpc.ini
[common]
server_addr = 123.32.12.32
server_port = 7000[ssh]
type = tcp
#本机IP
local_ip = 127.0.0.1
#本机需要映射的端口22(此端口为ssh端口,WSL2有可能设置为2222或其他端口,这里需要注意)
local_port = 22
#远程服务器映射的端口为6000
remote_port = 6000

启动客户端

./frpc -c frpc.ini

客户端也正常启动成功。

2.3 测试能否通过公网ssh到局域网的jetson

我们用另外一台设备,在局域网也可,手机用数据网络也可。这时候的ssh路径是 个人设备 -> 公网服务器 -> jetson。

例如我的jetson用户名是yan,上面我们配置了远程服务器映射的端口为6000,这个6000是指我们ssh到公网机器的端口,7000是frps和frpc通信的端口。

所以我的ssh指令是:

#ssh -p <frp配置的远程端口> <jetson的用户名><公网的IP>
ssh -p 6000 yan@123.32.12.32

密码为jetson的yan用户的密码。 注意密码不是公网云机器的密码,用户名也不是公网云机器的用户名。这里用户名和密码都要使用jetson设备的。

三、额外配置(可不选)

原始配置简单,但是如果需要其他功能,可自行添加,如下:

1:服务器端配置

vim frps.ini

修改如下:

[common]
bind_port = 7000
#http服务端口
vhost_http_port = 8088
#https服务端口
vhost_https_port = 8443
# dashboard网页管理界面,以及设置账户密码(非必须,未配置则直接进入)
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
#客户端需要设置一样的token值才能鉴权通过
token = 12345678

2:客户端配置

vim frpc.ini

修改如下:

[common]
server_addr = 123.32.12.32
server_port = 7000
#token和服务器一致
token = 12345678[ssh]
type = tcp
#本机IP
local_ip = 127.0.0.1
#本机需要映射的端口22(此端口为ssh端口,WSL2有可能设置为2222或其他端口,这里需要注意)
local_port = 22
#远程服务器映射的端口为6000
remote_port = 6000[web]
type = http
#本地http服务端口,默认80,按需配置
local_port = 80
# 绑定域名,注:配置http,必须需要域名,否则报错。如没有,可采用普通的tcp模式映射。
custom_domains = xxx[zabbix]
type = tcp
local_ip = 127.0.0.1
#本机需要映射的端口22
local_port = 10050
#远程服务器映射的端口为6000
remote_port = 11050

3:启动测试
分别启动客户端和服务器端

./frps -c frps.ini

客户端运行启动:

./frpc -c frpc.ini

浏览器打开web管理界面,http://123.32.12.32:7500/,输入账户密码,可查看端口映射相关情况。

同时访问:http://123.32.12.32:8088,即可访问跳转到到内网192.168.152.103机器的http服务。

四、后台启动和开机自动启动

后台跑直接使用nohup

服务器

nohup ./frps -c frps.ini >/dev/null 2>&1 &

jetson客户端

nohup ./frpc -c ./frpc.ini >/dev/null 2>&1 &

想要终止进程的话,
先找到进程:

ps -aux|grep frp| grep -v grep

然后再杀掉进程即可:

kill -9 进程号

设置自动启动

1、服务端配置frps.ini

[common]
bind_port = 7000
# tls_enable=true	# recommend add

在/etc/systemd/system/目录下创建服务文件

cd /etc/systemd/system/
sudo vim frps.service

填入以下信息,ExecStart自行替换为你自己的frp启动命令

[Unit]
Description=frpc
After=network.target
Wants=network.target[Service]
Restart=on-failure
RestartSec=5
ExecStart=/home/username/Software/frp/frps -c /home/username/Software/frp/frps.ini[Install]
WantedBy=multi-user.target
# 刷新服务列表
systemctl daemon-reload
# 设置开机自启
systemctl enable frps.service
# 启动服务
systemctl start frps.service
# 查看服务状态
systemctl status frps.service

2、客户端配置frpc.ini

在/etc/systemd/system/目录下创建服务文件

cd /etc/systemd/system/
sudo vim frpc.service

填入以下信息,ExecStart自行替换为你自己的frp启动命令

[Unit]
Description=frpc
After=network.target
Wants=network.target[Service]
Restart=on-failure
RestartSec=5
ExecStart=/data/module/frp_0.48.0_linux_amd64/frpc -c /data/module/frp_0.48.0_linux_amd64/frpc.ini[Install]
WantedBy=multi-user.target
# 刷新服务列表
systemctl daemon-reload
# 设置开机自启
systemctl enable frpc.service
# 启动服务
systemctl start frpc.service
# 查看服务状态
systemctl status frpc.service

执行上述命令服务就可以设置开机自启并启动服务

服务可能会在开机时启动失败。因此在设置开机自启命令时,最好在[Service]中定义Restart和RestartSec。

下面是一些常用的systemctl命令

# 关闭开机自启
systemctl disable frpc.service
# 停止服务
systemctl stop frpc.service
# 重启服务
systemctl restart frpc.service
# 查看状态
systemctl status frpc.service
# 查看是否设置开机自启
systemctl is-enabled frpc.service

五、一台服务器内网穿透多台jetson或者其他客户端

单个ssh配置成功,想配置多个,一样的操作,在另一台机器进行下载frp,之后只需要修改frpc.ini文件,修改格式如下:

[common]
server_addr = 39.105.97.50
server_port = 7000[ssh001] # 不能重复
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6009 # 不能重复

主要就是注释#不能重复 部分进行修改就可以。

相关文章:

  • 含锡电镀废水深度净化技术体系解析化利用的全流程优化
  • 【C++贪心 位运算】B3930 烹饪问题|普及
  • Day20打卡-奇异值SVD分解
  • 2025年大模型RAG技术的实践总结
  • 解释器和基于规则的系统比较
  • 历史数据分析——北部湾港
  • (2025)图文解锁RAG从原理到实操
  • 当冲压焊接遇上Canopen到Profinet协议转换网关
  • 【XCP实战】AUTOSAR架构下XCP DAQ功能配置实现
  • 代码随想录算法训练营第三十七天
  • 学习黑客5 分钟深入浅出理解Linux Logs [特殊字符]
  • MD5 值是什么?为什么文件需要检验 MD5?
  • 手机银行怎么打印流水账单(已解决)
  • LintCode第485题-生成给定大小的数组,第220题-冰雹猜想,第235题-分解质因数
  • 便签软件哪个好用?2025年桌面记事本便签软件推荐大全
  • ProfiNet转MODBUS模块构建西门子PLC与RTU仪表通讯连接方案
  • 考研408《计算机组成原理》复习笔记,第三章数值数据的表示和运算(定点数篇)
  • CMake 入门实践
  • jflash下载时出现 Could not read unit serial number! 的解决方法
  • SierraNet M1288网络损伤功能显著助力GPU互联网络的测试验证,包含包喷洒,LLR等复杂特性的验证测试
  • 法治日报:炮制师生日常剧本,校园怎么成了短视频流量秀场?
  • 墨西哥宣布就“墨西哥湾”更名一事起诉谷歌
  • 比特币价格重返10万美元,哪些因素使然?
  • 上海:企业招用高校毕业生可享受1500元/人一次性扩岗补助
  • 读图|展现城市品格,上海城市影像走进南美
  • 体坛联播|曼联热刺会师欧联杯决赛,多哈世乒赛首日赛程出炉