iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >使用frp实现内网穿透
  • 263
分享到

使用frp实现内网穿透

ubuntu服务器linux 2023-09-05 14:09:12 263人浏览 泡泡鱼
摘要

本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客 引言 一打五师兄走之前留了一块树莓派给我,暑假闲来无事拿出来玩玩 如果每次都连接显示屏和键盘使用有点麻烦而且低级 正常笔记本和树莓派

本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客


引言

一打五师兄走之前留了一块树莓派给我,暑假闲来无事拿出来玩玩

如果每次都连接显示屏和键盘使用有点麻烦而且低级

正常笔记本和树莓派都连着实验室的WIFI,网段一样,是可以ssh远程登录的

但我突然想到在家里连着家里的WIFI能不能也登录进树莓派呢

问题有了,开始干吧

内网穿透初步

正常来说两台linux设备只有在同一局域网下才可以进行互相的ssh远程登录

那么如果不在一个网段下,比方说一台在家里连着家里的WIFI,一台在学校连着实验室的WIFI,这种情况要想实现ssh远程登录则需要用到内网穿透

在这里插入图片描述

这就需要用到一个开源框架frp

https://GitHub.com/fatedier/frp

在这里下载与主机架构对应的版本

Https://github.com/fatedier/frp/releases

查看安装的Linux架构/版本

cat /proc/version
prejudice@prejudice-VirtualBox:~$ cat /proc/versionLinux version 5.4.0-122-generic (buildd@lcy02-amd64-035) (GCc version 7.5.0 (ubuntu 7.5.0-3ubuntu1~18.04)) #138~18.04.1-Ubuntu SMP Fri Jun 24 14:14:03 UTC 2022[lighthouse@VM-4-11-Centos ~]$ cat /proc/version Linux version 4.18.0-348.7.1.el8_5.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC)) #1 SMP Wed Dec 22 13:25:12 UTC 2021

💡 x86_64即amd64

学习视频

其实B站搜frp就有很多

如何优雅地访问远程主机?SSH与frp内网穿透配置教程

frp安装使用教程

学习文档

官网给了教程,实在是很贴心

https://Gofrp.org/docs/

通过 SSH 访问内网机器

运行下述命令的时候

ssh -oPort=6000 test@x.x.x.x

中间-oPort=6000实际上可以简化为-p 6000

这里的端口是公网用于listen的端口,frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口,因此这里x.x.x.x也是公网IP

服务端有两个端口,一个负责接收客户端的连接,一个负责监听与流量转发,有点类似于tcp通信connectfdlistenfd ,实际上也是基于TCP通信实现

因此需要在云服务器上打开两个端口的防火墙

在这里插入图片描述

简单实操

云服务器端

运行服务端程序

[lighthouse@VM-4-11-centos frp_0.44.0_linux_amd64]$ ./frps -c ./frps.ini 2022/07/21 21:18:23 [I] [root.go:209] frps uses config file: ./frps.ini2022/07/21 21:18:23 [I] [service.go:194] frps tcp listen on 0.0.0.0:70002022/07/21 21:18:23 [I] [root.go:218] frps started successfully

笔记本端运行./frpc -c ./frpc.ini 后,新建个登录窗口

[lighthouse@VM-4-11-centos /]$ ssh -p 6000 redwall@1.116.137.21redwall@1.116.137.21's passWord: Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-122-generic x86_64) * Documentation:  https://help.ubuntu.com * Management:     https://landscape.canonical.com * Support:        https://ubuntu.com/advantage0 updates can be applied immediately.New release '20.04.4 LTS' available.Run 'do-release-upgrade' to upgrade to it.Your Hardware Enablement Stack (HWE) is supported until April 2023.Last login: Thu Jul 21 17:05:31 2022 from 192.168.1.137redwall@redwall-G3-3500:~$

看到已经成功远程登录,可以进行相关操作了

redwall@redwall-G3-3500:~$ lscatkin_ws  CUDA_Samples  Test  公共的  模板  视频  图片  文档  下载  音乐  桌面redwall@redwall-G3-3500:~$ pwd/home/redwall

注意到客户端连接时会提示

2022/07/21 21:30:39 [I] [service.go:450] [f4703ace8f5e3c8f] client login info: ip [114.213.236.99:47292] version [0.44.0] hostname [] os [linux] arch [amd64]2022/07/21 21:30:39 [I] [tcp.go:64] [f4703ace8f5e3c8f] [ssh] tcp proxy listen port [6000]2022/07/21 21:30:39 [I] [control.go:465] [f4703ace8f5e3c8f] new proxy [ssh] type [tcp] success

有远程登录时会提示

2022/07/21 21:31:01 [I] [proxy.go:179] [f4703ace8f5e3c8f] [ssh] get a user connection [1.116.137.21:52368]

退出ssh远程登录时会提示

2022/07/21 21:28:31 [I] [control.go:307] [a1a79c2d05ad0fae] control writer is closing2022/07/21 21:28:31 [I] [proxy.go:88] [a1a79c2d05ad0fae] [ssh] proxy closing2022/07/21 21:28:31 [W] [proxy.go:176] [a1a79c2d05ad0fae] [ssh] listener is closed: accept tcp [::]:6000: use of closed network connection2022/07/21 21:28:31 [I] [control.go:396] [a1a79c2d05ad0fae] client exit success

还是非常人性化的

笔记本端

打开终端查看网络信息

redwall@redwall-G3-3500:~$ ifconfig enp59s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500        ether 8c:47:be:3b:dd:d2  txqueuelen 1000  (以太网)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10<host>        loop  txqueuelen 1000  (本地环回)        RX packets 1351  bytes 123182 (123.1 KB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 1351  bytes 123182 (123.1 KB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.1.137  netmask 255.255.255.0  broadcast 192.168.1.255        inet6 fe80::5348:35ba:d99a:6366  prefixlen 64  scopeid 0x20<link>        ether ac:12:03:c9:3a:01  txqueuelen 1000  (以太网)        RX packets 11079  bytes 12274960 (12.2 MB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 3983  bytes 509254 (509.2 KB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

简单配置frpc.ini

[common]server_addr = 1.116.137.21server_port = 7000[ssh]type = tcplocal_ip = 192.168.1.137local_port = 22remote_port = 6000

打开一个终端运行

redwall@redwall-G3-3500:~/Test/frp_0.44.0_linux_amd64$ ./frpc -c ./frpc.ini 2022/07/21 21:19:06 [I] [service.go:349] [a1a79c2d05ad0fae] login to server success, get run id [a1a79c2d05ad0fae], server udp port [0]2022/07/21 21:19:06 [I] [proxy_manager.go:144] [a1a79c2d05ad0fae] proxy added: [ssh]2022/07/21 21:19:06 [I] [control.go:181] [a1a79c2d05ad0fae] [ssh] start proxy success

在树莓派配置frp框架

由于树莓派只有2GB的RAM,因此安装的是Ubuntu 18.04 Bionic Beaver

一开始cat /proc/version查看是arm64,因此就在frp Release中下载的arm64版本

实际中会报错cannot execute binary file

linux下解决:cannot execute binary file

原因是程序所需架构与系统不匹配,想起来当时安装的是32位的server,所以换了Release下的arm版本,成功运行

SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

问题解决——SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
翻译过来就是
警告:远程主机标识已更改!

此报错是由于远程的主机的公钥发生了变化导致的

ssh服务是通过公钥和私钥来进行连接的,它会把每个曾经访问过计算机或服务器的公钥(public key),记录在~/.ssh/known_hosts 中,当下次访问曾经访问过的计算机或服务器时,ssh就会核对公钥,如果和上次记录的不同,OpenSSH会发出警告

直接echo >”~/.ssh/known_hosts”可以解决该问题

SSH Failed Permission Denied

服务器无法登录?教你如何解决 SSH Failed Permission Denied

这里主要是与sshd_config的配置有关

修改云服务器上的sshd_config

sudo cd /etc/ssh/sudo cp sshd_config sshd_config_initsudo vim sshd_config
PermitRootLogin yesPasswordAuthentication yesChallengeResponseAuthentication no

对树莓派上的sshd_config进行同样的修改,不过多一个内容

AddressFamily any

成功解决问题

Linux域名IP映射

Linux域名IP映射

进行域名IP映射是为了便于连接时的操作,不然还需要记住一长串IP地址,太麻烦了

sudo vim /etc/hosts# CentOSx.x.x.x centos# Raspberry Pix.x.x.x raspberry

设置frp开机自启

frp设置开机自启

创建service服务文件

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

文件内容如下

[Unit]Description=Frp ClientAfter=network.targetWants=network.target[Service]Type=simpleUser=ubuntuRestart=on-failureRestartSec=5ExecStart=/home/ubuntu/frpc_client -c /home/ubuntu/frpc.ini[Install]WantedBy=multi-user.target

这里User是你的用户名,ExecStart是执行文件的地址,更改这两处即可

刷新服务列表

systemctl daemon-reload

设置开机自启

systemctl enable frpc.service

实际效果

首先在云服务器上运行

[root@VM-4-11-centos frp_server]# ./frps -c ./frps.ini 2022/07/22 15:45:25 [I] [root.go:209] frps uses config file: ./frps.ini2022/07/22 15:45:25 [I] [service.go:194] frps tcp listen on 0.0.0.0:70002022/07/22 15:45:25 [I] [root.go:218] frps started successfully

树莓派通电开机后,云服务器终端显示

2022/07/22 15:46:02 [I] [service.go:450] [192daaa5a29e5228] client login info: ip [114.213.236.99:54242] version [0.44.0] hostname [] os [linux] arch [arm]2022/07/22 15:46:02 [I] [tcp.go:64] [192daaa5a29e5228] [ssh] tcp proxy listen port [6000]2022/07/22 15:46:02 [I] [control.go:465] [192daaa5a29e5228] new proxy [ssh] type [tcp] success

可以看到树莓派已经自动连接到云服务器

打开笔记本和手机热点,笔记本连接手机热点,使得笔记本和树莓派连接不同的WIFI

在笔记本终端运行

redwall@redwall-G3-3500:~/frp_client$ ./frpc -c ./frpc.ini 2022/07/22 15:46:31 [I] [service.go:349] [41273076a0105bd8] login to server success, get run id [41273076a0105bd8], server udp port [0]2022/07/22 15:46:31 [I] [proxy_manager.go:144] [41273076a0105bd8] proxy added: [ssh]

此时云服务器终端提示

2022/07/22 15:46:31 [I] [service.go:450] [41273076a0105bd8] client login info: ip [39.144.38.10:42468] version [0.44.0] hostname [] os [linux] arch [amd64]

说明笔记本也连上了云服务器,并且明显可以看出笔记本和树莓派连着不同的WIFI

这时在笔记本新建一个终端,运行

redwall@redwall-G3-3500:~$ ssh -p 6000 ubuntu@centos ubuntu@centos's password: Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-1066-raspi armv7l) * Documentation:  https://help.ubuntu.com * Management:     https://landscape.canonical.com * Support:        https://ubuntu.com/advantage  System infORMation as of Fri Jul 22 07:47:21 UTC 2022  System load:  1.18               Processes:            138  Usage of /:   37.9% of 14.28GB   Users logged in:      0  Memory usage: 5%                 IP address for wlan0: 192.168.1.111  Swap usage:   0% * Super-optimized for small spaces - read how we shrank the memory   footprint of Microk8s to make it the smallest full K8s around.   https://ubuntu.com/blog/microk8s-memory-optimisation0 updates can be applied immediately.New release '20.04.4 LTS' available.Run 'do-release-upgrade' to upgrade to it.Your Hardware Enablement Stack (HWE) is supported until April 2023.Last login: Fri Jul 22 07:40:35 2022ubuntu@ubuntu:~$ lscatkin_ws  frp_clientubuntu@ubuntu:~$ pwd/home/ubuntuubuntu@ubuntu:~$

可以看到已经成功实现在不同网段下Linux主机间的ssh远程登录

后面就可以进行愉快的编程开发

来源地址:https://blog.csdn.net/Solititude/article/details/131362877

--结束END--

本文标题: 使用frp实现内网穿透

本文链接: https://www.lsjlt.com/news/395436.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用frp实现内网穿透
    本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客 引言 一打五师兄走之前留了一块树莓派给我,暑假闲来无事拿出来玩玩 如果每次都连接显示屏和键盘使用有点麻烦而且低级 正常笔记本和树莓派...
    99+
    2023-09-05
    ubuntu 服务器 linux
  • 内网穿透-Frp(1)使用樱花Frp(Sakura Frp)进行免费的内网穿透操作步骤
    背景介绍:因需要在4G路由器(openwrt,mips架构)上提高页面和视频流展示,需要在公网能访问的,问题:4G卡不能固定IP,所以没办法使用公网+端口映射方式进行;故采取内网穿透frp方式进行公网访问,frp需要跳板机(serve...
    99+
    2023-10-01
    linux 运维 服务器
  • 群晖 NAS 通过 frp 实现内网穿透
    写在前面 前段时间家里的 NAS 换新,换了一台功能强大的群晖 NAS 存储,这玩意鼓捣起来功能还挺多,很多功能发现还很好用,例如,通过 Synology Drive 可以构建自己的专属网盘,可以实时...
    99+
    2023-09-04
    网络 服务器 运维
  • 云服务器frp内网穿透
    云服务器frp内网穿透,也叫做虚拟内网穿透,是一种常见的网络攻击手段之一。它可以绕过云服务器服务器的防火墙或安全审计,访问被黑客控制的内网系统,从而获取被保护的敏感信息或控制权。云服务器服务器的防火墙和安全审计系统都可以检测到这些虚拟内网穿...
    99+
    2023-10-26
    内网 服务器 frp
  • 怎么配置frp服务器实现内网穿透
    本篇内容主要讲解“怎么配置frp服务器实现内网穿透”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么配置frp服务器实现内网穿透”吧!  内网服务器ip地址:1...
    99+
    2022-12-16
    服务器
  • 内网穿透工具frp原理和使用教程
    内网穿透(Port Forwarding)是将公网上的IP地址映射到内部网络中的一台计算机的某个端口上,以便外部网络可以访问该计算机中运行的应用程序。内网穿透技术可以通过一些开源工具来实现,其中比较常用的是frp。在本文中,我们将介绍frp...
    99+
    2023-08-19
    服务器 网络 http
  • 内网穿透(什么是内网穿透,为什么要实现内网穿透,mac如何实现内网穿透)
    文章目录 1. 什么是内网穿透?2. 为什么要实现内网穿透?3. mac如何实现内网穿透? 1. 什么是内网穿透? 内网穿透(又称为端口映射),也就是将本地内网端口映射到公网(又称为外...
    99+
    2023-10-01
    macos 网络 服务器
  • 什么是内网穿透?内网穿透有什么用?内网穿透如何实现
    什么是内网穿透?内网穿透是什么意思?内网穿透有什么用?怎么搭建内网穿透?没公网IP如何做内网穿透? 一、什么是内网穿透 首先我们对内网和外网这两个名词做个解释: 内网:是内部建立的局域网络或办公网络; 外网:是通过一个网关或网桥与其他网络...
    99+
    2023-09-27
    服务器 网络 运维
  • 高性能的内网穿透工具frp使用场景
    目录什么是 frp为什么使用 frp安装使用使用场景统一的服务端配置SSH 连接内网服务器暴露内网 HTTP 服务TCP 类型HTTP 类型静态文件下载服务本文将分享一个很好用的内网...
    99+
    2024-04-02
  • Frp做内网穿透访问家里的Web网站
    这篇文章主要介绍Frp做内网穿透访问家里的Web网站,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!frp做内网穿透访问家里的Web网站frp做内网穿透访问家里的Web网站服务器端配置参考之前的文章,在之前文章的基础上...
    99+
    2023-06-17
  • Linux系统内网穿透工具FRP该怎么用
    本篇文章给大家分享的是有关Linux系统内网穿透工具FRP该怎么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp...
    99+
    2023-06-28
  • 基于http+公网ip的Frp内网穿透教程(win server)
    Frp介绍 frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 https://github.com/fatedier/frp Frp工作原理 FR...
    99+
    2023-09-28
    tcp/ip 服务器 网络 Powered by 金山文档
  • 使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例
    一、FRP简介 FRP,即快速反向代理技术(fast reverse proxy)。本文的FRP程序是基于github开源项目GitHub - fatedier/frp。当前,该程序可实现:“将位于 NAT 或防火墙后面的本地服务器暴露给互...
    99+
    2023-10-24
    FRP反向代理 内网穿透 windows 云服务器
  • 使用Nodejs怎么实现内网穿透服务
    这篇文章给大家介绍使用Nodejs怎么实现内网穿透服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 局域网内代理我们先来回顾上篇,如何实现一个局域网内的服务代理?因为这个非常简单,所以,直接上代码。const&n...
    99+
    2023-06-15
  • Nodejs实现内网穿透服务
    目录1. 局域网内代理 2. 内网穿透 什么是内网穿透? bridge proxyServe 总结 proxyServe源码 也许你很难从网上找到一篇从代码层面讲解内网穿透的文章,我...
    99+
    2024-04-02
  • 怎么使用云服务器实现内网穿透
    使用云服务器实现内网穿透可能需要您提供内网IP地址和端口号,以便管理员可以在云主机上创建私有网络。内网穿透的过程可以大致如下: 确定需要穿透的内网地址和端口号:在云服务器上安装相应的客户端程序和脚本,例如:https://ycloud....
    99+
    2023-10-26
    内网 服务器
  • 怎么在Mac中使用网云穿内网穿透
    这期内容当中小编将会给大家带来有关怎么在Mac中使用网云穿内网穿透,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。网云穿内网穿透Mac版本使用演示环境:Mac 10.13.6网云穿 1.01. 下载网云穿到...
    99+
    2023-06-03
  • 利用云服务器实现内网穿透
    利用云服务器实现内网穿透有许多潜在的好处,例如: 保护敏感数据:当你的数据通过云服务器传输到公共云或其他第三方应用程序,你的敏感信息就会被加密或匿名化处理,以确保只有授权用户能够访问和操作。这样就可以确保数据不被未经授权的人访问,从而保...
    99+
    2023-10-26
    内网 服务器
  • Java使用黑盒方式模拟实现内网穿透
    目录前言:1. 内网穿透简介2. 具体想法和实现细节2.1 具体想法2.2 实现细节3. 代码实现3.1 目录结构3.2 Client 类3.3 Connection 类3.4 Ms...
    99+
    2023-05-18
    Java黑盒 Java内网穿透
  • 如何使用内网穿透访问内网ssh
    本篇文章为大家展示了如何使用内网穿透访问内网ssh,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。穿透内网Linux系统22端口(SSH)下载网云穿linux版本可使用wget下载或直接在官网下载并使...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作