使用frp进行内网穿透,实现ssh远程访问Linux服务器
搭建一个完整的frp服务链需要:
VPS一台(也可以是具有公网IP的实体机)
访问目标设备(就是你最终要访问的设备)
简单的Linux基础(如果基于Linux配置的话)
我这里使用了腾讯云服务器作为服务端(Ubuntu Server 20.04 LTS)、本地Linux虚拟机作为要访问的客户端(Ubuntu 20.04 LTS)和本地Xshell(用于远程连接客户端)进行测试。
最后是想把实验室的电脑进行内网穿透实现 ssh 远程访问。
流程很简单,服务端和客户端都下载 frp 配置文件,分别修改配置(地址、端口映射),然后启动运行即可。本文基于 Linux 配置,macOS 和 Windows 流程一致,最多是命令可能有点区别。
服务端配置
下载 frp 的安装包(GitHub连接在此),注意服务端和客户端要同一版本。我这里是64位Linux,最新版是0.38.0,根据需要选择即可,速度太慢自己想办法,可以考虑本地下了通过ftp传到服务器。
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
解压,文件夹改名为frp,方便使用。腾讯云可能把这玩意当作木马,去控制台信任即可。
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cp -r frp_0.38.0_linux_amd64 frp
cd frp
看一下文件夹下的内容:
ubuntu@VM-0-10-ubuntu:~/frp$ ls -a
. .. frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE systemd
我们只需要关注如下几个文件
frps
frps.ini
frpc
frpc.ini
前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。因为我们正在配置服务端,可以删除客户端的两个文件(删不删无所谓),然后修改frps.ini文件。
rm frpc
rm frpc.ini
vim frps.ini
frps.ini文件内容如下:
[common]
bind_port = 7000
bind_port表示用于客户端和服务端连接的端口,默认绑定 7000 端口,云服务器注意打开相应端口。其实还有其他参数可选配置实现其他功能,这里只实现ssh远程访问,不作讨论。
编辑完成后即可保存,运行服务端应用:
./frps -c frps.ini
如下则成功运行:
2021/12/12 00:32:59 [I] [root.go:200] frps uses config file: frps.ini
2021/12/12 00:32:59 [I] [service.go:192] frps tcp listen on 0.0.0.0:7000
2021/12/12 00:32:59 [I] [root.go:209] frps started successfully
此时的服务端仅运行在前台,如果 Ctrl+C 停止或者关闭 SSH 窗口后,frps 均会停止运行,因而我们使用 nohup 命令将其运行在后台。nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行;“&”可以让你的命令在后台运行。
nohup ./frps -c frps.ini &
此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序jobs在结果中我们可以看到frps正在后台正常运行:
[1]+ Running nohup ./frps -c frps.ini &
客户端配置
以同样的方式下载 frp
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cp -r frp_0.38.0_linux_amd64 frp
cd frp
vim frpc.ini
frpc.ini文件内容如下:
[common]
server_addr = 127.0.0.1
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
common字段下的三项即为服务端的设置。
server_addr为服务端IP地址,自行更改。server_port为服务器端口,填入你设置的端口号即可,如果未改变就是7000。
[xxx]表示一个规则名称,自己定义,便于查询即可。这里用于 ssh 所以命名为 [ssh] 了。
type连接类型,默认为 tcp,如有需要请自行查询 frp 手册。local_ip本地 IPlocal_port用于 ssh 的端口号,默认 22remote_port映射的服务端端口,访问该端口时默认转发到客户端的 22 端口,不同的客户端设置不同的端口号。
配置好后可以使用同样的方法后台运行客户端程序:
nohup ./frpc -c frpc.ini &
测试
启动完成后就可以通过 ssh 连接到内网服务器了,同时也可以用 sftp 传输文件。
ssh -p 6000 user@host
参考
[1] 使用 frp 进行服务器内网穿透
[2] 使用frp进行内网穿透
[3] 如何使用 frp 实现内网穿透
[4] win10下用frp内网穿透实现ssh远程连接linux服务器(Windows可参考这篇)
使用frp进行内网穿透,实现ssh远程访问Linux服务器的更多相关文章
- frp实现内网穿透
frp实现内网穿透 目标 通过外网访问内网设备,本文中实现通过手机的移动流量,可以访问到树莓派设备 设备准备 需要被访问的设备(本文中使用Raspberry Pi`).公网IP设备(本文中使用阿里云 ...
- frp+nginx内网穿透
frp+nginx内网穿透 背景:自己有台内网Linux主机,希望被外网访问(ssh.http.https): 准备工作 内网Linux主机-c,可以访问c主机和外网的主机-s(windows/lin ...
- 疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公
当前情况下,经常会有需要到公司电脑进行一些操作,比如连接内网OA,数据库或者提交文档.为了减少外出,将使用frp进行内网穿透的方法进行一个说明. 前提条件 1. 一台拥有公网 IP 的设备(如果没有, ...
- 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问
原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...
- frp 用于内网穿透的基本配置和使用
frp 用于内网穿透的基本配置和使用 今天是端午节,先祝端午安康! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便 ...
- 基于frp的内网穿透实例1-通过SSH访问内网机器
原文地址:https://wuter.cn/1804.html/ 老母鸡终于到了,作为一个能运行linux系统的四核1G硬件,它还是比较小巧的. FRP 全名:Fast Reverse Proxy.F ...
- 分享下超实用的用skura frp做内网穿透的经验
操作目的: 使无公网ip的主机能被外网访问,实现ssh对服务器的远程管理 硬件准备: 1.服务端:skura frp主机(skura frp 免费提供,有待创建) 2.客户端:接在无线路由器(内网)上 ...
- 使用FRP做内网穿透
Github地址:https://github.com/fatedier/frp 什么是FRP? frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 h ...
- 如何使用 frp 实现内网穿透
这有一个专注Gopher技术成长的开源项目「go home」 背景 作为一名程序员,家里多多少少会有一些落了灰的电脑,如果把闲置的电脑变成服务器,不仅有良好的配置,还能用来做各种测试,那就再好不过了. ...
随机推荐
- 全球首发-基于.NET 6长线支持Zoomla!逐浪CMS v8.6.0正式发布
传送门: https://www.z01.com/down/3778.shtml 全新Zoomla!逐浪CMS v8.6.0 全于首个基于.net 6长线支持的CMS-Zoomla!逐浪CMS v8. ...
- laravel DB 类库
DB 类操作数据库 基本用法: DB::table('tableName'); 获取操作tableName 表 增加信息 对数据库中的某个表增加数据主要有两个函数可以 ...
- 面霸篇:Java 集合容器大满贯(卷二)
面霸篇,从面试角度作为切入点提升大家的 Java 内功,所谓根基不牢,地动山摇. 码哥在 <Redis 系列>的开篇 Redis 为什么这么快中说过:学习一个技术,通常只接触了零散的技术点 ...
- Java 如何对文件进行多个Object对象流的读写操作
思路:把已经序列化的对象存入容器(如LinkedList<?>)中,然后用ObjectInputStream和ObjectOutputStream对这个实例化的LinkedList< ...
- VC练习一
1 #include<windows.h> 2 #include<stdio.h> 3 LRESULT CALLBACK WinSunProc(HWND hwnd,UINT u ...
- [gym102770L]List of Products
有一个很重要的性质:若$a\le b$且$c\le d$,则$ac\le bd$ 根据这一性质,就可以利用单调性$o(n)$求出小于$a_{x}\cdot b_{y}$的数的个数(先要对$a$和$b$ ...
- 关于 RocketMQ ClientID 相同引发的消息堆积的问题
首先,造成这个问题的 BUG RocketMQ 官方已经在 3月16号 的这个提交中修复了,这里只是探讨一下在修复之前造成问题的具体细节,更多的上下文可以参考我之前写的 <RocketMQ Co ...
- CF1477A Nezzar and Board
考虑 \(2x - y\) 我们改为 \(x + (x - y)\) 是一个更好的形式. 我们可以表示一个数为\(x_i + \sum_{j,k}(x_j - x_k) = K\) 我们考虑移到 \( ...
- CF1562E Rescue Niwen!
开始的时候只会一个\(O(n^2log)\) 即做出所有的\(n^2\)串,显然可以用\(SAM\)来进行这样一个排序,然后\(log\)做. 但这种题我们显然要找一些友好的性质: 我们发现字符串的比 ...
- Codeforces 526G - Spiders Evil Plan(长链剖分+直径+找性质)
Codeforces 题目传送门 & 洛谷题目传送门 %%%%% 这题也太神了吧 storz 57072 %%%%% 首先容易注意到我们选择的这 \(y\) 条路径的端点一定是叶子节点,否则我 ...