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 # 不能重复

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/904962.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/904962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VScode密钥(公钥,私钥)实现免密登录【很细,很全,附带一些没免密登录成功的一些解决方法】

一、 生成SSH密钥对 ssh-keygen 或者 ssh-keygen -t rsa -b 4096区别&#xff1a;-t rsa可以明确表示生成的是 RSA 类型的密钥-b参数将密钥长度设置为 4096 位默认&#xff1a;2048 位密钥不指定-t参数&#xff0c;ssh -keygen默认也可能生成 RSA 密钥【确保本机安装ssh&#…

解释器和基于规则的系统比较

解释器&#xff08;Interpreter&#xff09;和基于规则的系统&#xff08;Rule-Based System&#xff09;是两种不同的软件架构风格&#xff0c;分别适用于不同的应用场景。它们在设计理念、执行机制和适用领域上有显著差异。以下是它们的核心对比&#xff1a; 1. 解释器&#…

DB4S:一个开源跨平台的SQLite数据库管理工具

DB Browser for SQLite&#xff08;DB4S&#xff09;是一款开源、跨平台的 SQLite 数据库管理工具&#xff0c;用于创建、浏览和编辑 SQLite 以及 SQLCipher 数据库文件。 功能特性 DB4S 提供了一个电子表格风格的数据库管理界面&#xff0c;以及一个 SQL 查询工具。DB4S 支持…

printf调试时候正常,运行时打印不出来

问题是在添加了 printf 功能后&#xff0c;程序独立运行时无法正常打印输出&#xff0c;而调试模式下正常。这表明问题可能与 printf 的重定向实现、标准库配置、或编译器相关设置有关。 解决&#xff1a; 原来是使用 Keil/IAR&#xff0c;printf可能需要启用 MicroLIB 或正确…

轻松制作高质量视频,实时生成神器LTX-Video重磅登场!

探索LTX-Video&#xff1a;实时视频生成跨越新高度 在如今这个视觉内容主导的数字时代&#xff0c;视频生成成为推动创意表达的关键。而今天&#xff0c;我们将带您深入探索LTX-Video&#xff0c;一个强大的开源项目&#xff0c;致力于通过尖端技术将视频生成提升到一个全新的…

分布式事务快速入门

分布式事务基本概念 使用分布式事务的场景&#xff1a;分布式场景下的跨数据库事务 分布式事务诞生的理论&#xff1a;CAP和Base 3种一致性&#xff1a; 强一致性 &#xff1a;系统写入了什么&#xff0c;读出来的就是什么。 弱一致性 &#xff1a;不一定可以读取到最新写入…

nvme Unable to change power state from D3cold to D0, device inaccessible

有个thinkpad l15 gen4笔记本&#xff0c;使用较少&#xff0c;有一块三星m2和东芝14t硬盘&#xff0c;想安装飞牛nas系统作为家庭照片库&#xff0c;制作飞牛启动盘&#xff0c;发现安装飞牛需要全盘格式化&#xff0c;电脑本身的系统还是需要保留的&#xff0c;故想到再安装一…

Unity Shaders and Effets Cookbook

目录 作者简介 审稿人简介 前言 我是偏偏 Unity Shaders and Effets Cookbook 第一章&#xff1a;Diffuse Shading - 漫反射着色器 第二章&#xff1a;Using Textures for Effects - 着色器纹理特效的应用 第三章&#xff1a;Making Your Game Shine with Specular - 镜…

部署RocketMQ

部署环境&#xff1a;jdk8以上&#xff0c;Linux系统 下载和安装指令&#xff1a; wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip 显示下载成功&#xff1a; --2025-05-10 11:34:46-- https://archive.apache.org/dist/rocketm…

使用FastAPI和React以及MongoDB构建全栈Web应用04 MongoDB快速入门

一、NoSQL 概述 1.1 了解关系数据库的局限性 Before diving into NoSQL, it’s essential to understand the challenges posed by traditional Relational Database Management Systems (RDBMS). While RDBMS have been the cornerstone of data management for decades, th…

高精度之加减乘除之多解总结(加与减篇)

开篇总述&#xff1a;精度计算的教学比较杂乱&#xff0c;无系统的学习&#xff0c;且存在同法多线的方式进行同一种运算&#xff0c;所以我写此篇的目的只是为了直指本质&#xff0c;不走教科书方式&#xff0c;步骤冗杂。 一&#xff0c;加法 我在此讲两种方法&#xff1a; …

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

1. 引言 光伏功率预测对于电力系统调度、能源管理和电网稳定性至关重要。随着深度学习技术的发展,大模型(如Transformer、LSTM等)在时间序列预测领域展现出强大能力。本文将详细介绍基于大模型的光伏功率预测方法,涵盖短期(1-6小时)、超短期(15分钟-1小时)和中长期(1天-1周…

玩转Docker(一):基本概念

容器技术是继大数据和云计算之后又一炙手可热的技术&#xff0c;而且未来相当一段时间内都会非常流行。 本文将对其基本概念和基本使用做出介绍。包括容器生态系统、容器的原理、怎样运行第一个容器、容器技术的概念与实践、Docker镜像等等 目录 一. 鸟瞰容器生态系统 1. 容器…

计算机视觉与深度学习 | 基于数字图像处理的裂缝检测与识别系统(matlab代码)

🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅 基于数字图像处理的裂缝检测与识别系统 🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦**系统架构设计****1. 图像预处理**目标:消除噪声+增强裂缝特征**2. 图像分割**目标:提取裂缝区域**3. 特征…

推荐一款免费开源工程项目管理系统软件,根据工程项目全过程管理流程开发的OA 办公系统

在当今的工程项目管理领域&#xff0c;许多企业和团队面临着诸多难题。传统的管理方式往往依赖于人工记录和分散的工具&#xff0c;导致项目进度难以实时把控&#xff0c;任务分配不够清晰&#xff0c;合同管理混乱&#xff0c;事件提醒不及时&#xff0c;财务管理缺乏系统性&a…

Proser:在使用中改进

上位机接收到下位机发送的协议&#xff0c;解析出工作模式&#xff0c;然后依据此模式切换到相应的界面。为了调试这个功能&#xff0c;由Proser提供的Block与Sequence生成器相当有用&#xff1a; 使用Block生成器&#xff1a;忽略掉不感兴趣的数据使用Sequence生成器&#xf…

C语言_程序的段

在 C 语言程序中,内存通常被分为多个逻辑段,每个段存储不同类型的数据。理解这些段的结构和功能,有助于你更高效地编写、调试和优化程序。以下是 C 语言程序中主要的内存段及其特点: 1. 代码段(Text Segment) 存储内容:编译后的机器指令(程序代码)。特性: 只读:防止…

【桌面】【输入法】常见问题汇总

目录 一、麒麟桌面系统输入法概述 1、输入法介绍 2、输入法相关组件与服务 3、输入法调试相关命令 3.1、输入法诊断命令 3.2、输入法配置重新加载命令 3.3、启动fcitx输入法 3.4、查看输入法有哪些版本&#xff0c;并安装指定版本 3.5、重启输入法 3.6、查看fcitx进程…

Node.js 24.0 正式发布:性能跃升与开发体验全面升级

Node.js v24.0.0 震撼发布&#xff01;V8 13.6、npm 11、权限模型稳定化等重磅更新 2025年5月6日 —— Node.js 社区迎来重大里程碑&#xff01;Node.js v24.0.0 正式发布&#xff0c;带来一系列激动人心的新特性、性能优化和 API 改进。本次更新涵盖 V8 JavaScript 引擎升级至…

MySQL 查询优化全攻略:从原理到实战

为什么查询优化如此重要&#xff1f; 在当今数据驱动的时代&#xff0c;数据库性能直接影响着用户体验和业务效率。根据统计&#xff0c;网页加载时间每增加1秒&#xff0c;转化率可能下降7%&#xff0c;而数据库查询往往是性能瓶颈的关键所在。作为最流行的开源关系型数据库之…