frp内网穿透SSH

参考博客:
博客1(推荐): https://sspai.com/post/52523
博客2: https://blog.csdn.net/qq_36981760/article/details/115713179
博客3: https://blog.csdn.net/qq_36981760/article/details/115713179
参考视频
(推荐,比较详细): https://www.bilibili.com/video/BV1p94y1y7ft/

背景

由于寒假放假回家, 回家之后就不能连接学校的服务器了(可以不用,但是不能没有),所以最近了解frp内网穿透技术通过连接公网ip就可以连接学校的服务器。但是查阅博客中有一些细节我感觉没有讲清楚(可能是我比较菜, 配了挺久), 所以特此缝合一篇博客供大家使用。

frp介绍

frp可以通过利用公网IP的的主机(frp服务端)将内网的主机(frp客户端)暴露给互联网,从而实现通过外网能直接访问到内网主机;frp有服务端和客户端,服务端需要装在有公网ip的主机上,客户端装在内网主机上(重点!!!)。

frp案例:

情况1. 电脑在学校: 连接学校网的主机 --------> 学校服务器 (属于同一个局域网中可以直接连)

情况2. 电脑在家(和服务器不在一个局域网中): 家里面的主机 --------> 公网ip --------> 学校服务器 (需要使用frp)

如果你是情况1, 那么恭喜你不需要使用内网穿透,
如果你是情况2, 我们的目的是通过内网穿透(frp)技术,本地主机通过访问公网主机ip(106.55.xxx.xxx)即可访问服务器主机。 举例我在家连接学校服务器

准备工作

  • (frp服务端) 一台公网主机,一般是云服务器(阿里云、腾讯云等都行) 注意: 不能是192.168.xxx.xxx 这种ip地址开头的本地虚拟机主机,这样满足公网条件 (假设本案例使用的公网ip为 106.55.123.123)
  • (frp客户端)一台私网主机,一般是局域网里面服务器 注意: 可以是192.168这种ip地址开头的虚拟机主机 (假设服务器ip为 222.200.123.123)
  • 一台想要使用服务器的主机(ip理论上任意,可以访问公网即可)

环境说明: frp服务端, frp客户端都是Linux系统

1. frp服务端设置

说明: 内网穿透需要先配置frp服务端然后再配置frp客户端

1.1 frp的下载

官网下载地址: https://github.com/fatedier/frp/releases
选择适合的版本下载(以v0.33.0版本为例)
查看Linux主机版本为

arch 

查看结果,如果是“X86_64“即可选择”frp_0.33.0_linux_amd64.tar.gz

创建vpns目录用于存放frp服务端的安装包:(目录名称可以自定以)

mkdir vpns

切换到vpns目录下载frp服务端

cd vpns

1.1.1 双击下载

v0.33.0下载地址: https://github.com/fatedier/frp/releases/tag/v0.33.0

下载后上传到frp服务端的vpns目录中即可

1.1.2 wget命令下载

在frp服务端的vpns目录下进行下载

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

1.2 frp文件解压

tar -zvxf frp_0.33.0_linux_amd64.tar.gz

解压后如图所示

复制frp_0.33.0_linux_amd64文件夹并改名为frp,方便使用

cp -r frp_0.33.0_linux_amd64 frp

当前vpns目录下文件结构

1.3 删除冗余文件

cd frp

删除与frp服务端无关的文件

rm -rf frpc frpc.ini frpc_full.ini

删除后frp目录如下所示

1.4 配置frps.ini文件

vim frps.ini

默认初始化内容是这样的

[common]
bind_port = 7000

复制内容 添加到文件末尾

dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_ssh_port = 6000
vhost_rdp_port = 7001
heartbeat_timeout = 60

更改后frps.ini 文件内容如下

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_ssh_port = 6000
vhost_rdp_port = 7001
heartbeat_timeout = 60

:wq!保存退出
配置完如下

各个参数说明:

# bind_port 表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
bind_port = 7000
# dashboard_port 是服务端仪表板的端口,在配置完成服务启动后可以通过公网ip:7500 进行访问
dashboard_port = 7500
# token是用于客户端和服务端连接的口令,自行设置并记录,稍后会用到。
token = 12345678
# dashboard_user 和 dashboard_pwd 表示打开仪表板页面(7500端口)
# 登录的用户名和密码 可以自定义
dashboard_user = admin
dashboard_pwd = admin
# vhost_ssh_port 表示要用6000端口 作为ssh服务端口
vhost_ssh_port = 6000
# vhost_ssh_port 表示要用7001端口 作为rdp服务端口
vhost_rdp_port = 7001
# 心跳连接: 建议配置, frp 0.43.0版本如果不加,60秒就会自动断开连接!
# frp服务端就加这一条,frp客户端每个服务都要加。
heartbeat_timeout = 60

1.5 防火墙开放端口

防火墙相关操作: https://blog.csdn.net/qq_45056135/article/details/128172916
查看当前开放的端口

firewall-cmd --zone=public --list-ports

将7000, 7500, 6000, 7001端口开放
开放 7000 端口(frps服务端和frpc客户端建立连接)

firewall-cmd --zone=public --add-port=7000/tcp --permanent

开放7500端口(配置完成启动服务后可以通过浏览器访问 x.x.x.x:7500 , 其中x.x.x.x为frp服务端的ip, 查看frp服务运行信息。例如的是106.55.123.123:7500)

firewall-cmd --zone=public --add-port=7500/tcp --permanent

开放 6000 端口(用于和frp服务端和frp端建立ssh连接协议, 之后会讲到)

firewall-cmd --zone=public --add-port=6000/tcp --permanent

开放 7001 端口(用于和frp服务端和frp端)

firewall-cmd --zone=public --add-port=7001/tcp --permanent

使其立即生效

firewall-cmd --reload

查看当前开放的端口

firewall-cmd --zone=public --list-ports

如下所示表示端口已经开放

如果你的frp服务端是云服务器,在防火墙设置中开放7000, 7500, 6000, 7001端口确保端口真的开放了(因为云服务器中利用命令开启端口可能无效)
如下所示

1.6 运行frps服务端

在frp目录下运行

./frps -c frps.ini

如下所示表示运行服务端成功

检查公网ip的7500端口是否可以正常访问
例如我的公网ip是: 106.55.123.123

106.55.123.123:7500

此时用浏览器访问 106.55.123.123:7500:7500 并使用自己设置的用户名密码登录(都是admin),即可看到仪表板界面
如下说明设置成功
在这里插入图片描述
到这里frp服务端设置已经完成

2. frp客户端设置

2.1 frp的下载

官网下载地址: https://github.com/fatedier/frp/releases
选择适合的版本下载(以v0.33.0版本为例)
查看Linux主机版本为

arch 

如下所示, 查看结果,如果是“X86_64“即可选择”amd64”

创建目录用于存放frp客户端安装包:

mkdir vpnc

切换到vpnc进行下载frp客户端

cd vpnc

2.1.1 双击下载

v0.33.0下载地址: https://github.com/fatedier/frp/releases/tag/v0.33.0

下载上传到frp客户端的vpnc目录中

2.1.2 wget命令下载

切换到frp客户端的vpnc目录中(目录名称可以自定义)
利用wget命令进行下载frp

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

2.2 frp文件解压

解压frp_0.33.0_linux_amd64.tar.gz文件

tar -zvxf frp_0.33.0_linux_amd64.tar.gz

解压之后目录结构如下

复制文件夹并改名为frp,方便使用

cp -r frp_0.33.0_linux_amd64 frp

当前vpnc目录下文件结构

2.3 删除冗余文件

cd frp

删除与frp客户端无关的文件 frps frps.ini frps_full.ini

rm -rf frps frps.ini frps_full.ini

删除后frp目录如下所示

2.4 配置frpc.ini文件

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

修改server_addr为frp服务端ip

server_addr = 106.55.123.123

添加toke口令和frp服务端的token口令一致

token = 12345678

复制内容,添加到文件末尾

[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001
heartbeat_timeout = 60

更改后frpc.ini文件内容如下

[common]
server_addr = 106.55.123.123
server_port = 7000
token = 12345678
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
heartbeat_timeout = 60
[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001
heartbeat_timeout = 60

注意: [ssh] [rdp] 这种头不能重名
文件各个参数说明:

[common]
# server_addr 表示frp服务端的ip地址
server_addr = 106.55.123.123
# 表示frp服务端的bind_port 7000
server_port = 7000
# token 口令 frp服务端客户端需要一致
token = 12345678
[ssh]
# 连接类型 一般都是tcp
type = tcp
# frp客户端ip地址 写127.0.0.1或者222.200.123.123 都可以
local_ip = 127.0.0.1
# 表示frp客户端的22端口号和frp服务的6000端口号相对应
# 如果需要使用ssh服务frp客户端需要开放22端口,同时frp服务端需要开放6000端口
local_port = 22
remote_port = 6000
# 心跳连接: 建议配置, frp 0.43.0版本如果不加,60秒就会自动断开连接!
# frp服务端就加这一条,frp客户端每个服务都要加。
heartbeat_timeout = 60
[rdp]
# 连接类型 一般都是tcp
type = tcp
# frp客户端ip地址 写127.0.0.1或者222.200.123.123 都可以
local_ip = 127.0.0.1   
# 表示frp客户端的3389端口号和frp服务的7001端口号相对应
# 如果需要使用rdp服务,frp客户端需要开放3389端口,同时frp服务端需要开放7001端口        
local_port = 3389
remote_port = 7001
# 心跳连接: 建议配置, frp 0.43.0版本如果不加,60秒就会自动断开连接!
# frp服务端就加这一条,frp客户端每个服务都要加。
heartbeat_timeout = 60

2.5 防火墙开放端口

防火墙相关操作: https://blog.csdn.net/qq_45056135/article/details/128172916
查看当前开放的端口

firewall-cmd --zone=public --list-ports

将7000, 7500, 6000, 7001端口开放
开放 7000 端口(frp客户端和frps服务端建立连接)

firewall-cmd --zone=public --add-port=7000/tcp --permanent

开放22端口(用户建立ssh连接)

firewall-cmd --zone=public --add-port=22/tcp --permanent

开放3389端口(用户建立rdp连接)

firewall-cmd --zone=public --add-port=3389/tcp --permanent

使其立即生效

firewall-cmd --reload

检查是否成功开启

firewall-cmd --zone=public --list-ports

如下表示成功开启7000, 3389, 22端口

2.6 运行frps客户端

注意: 运行客户端之前一定要保证frp服务端是开启的
运行frps客户端

./frpc -c frpc.ini

如下所示一直在等待的情况说明内frp服务端frp客户端建立连接成功(可能是配置问题,或者是防火墙的问题, 确实frp服务端和客户端的7000是否都已经打开了)

如下图所示表示frp服务端frp客户端建立连接成功

到了这里基本上就差不多成功了

服务端和客户端配置文件的对应关系

在这里插入图片描述
如果我们需要修改bind_port等参数,服务端和客户端的值对应即可
注意: 修改完端口参数之后要开放相应的防火墙端口!!!

1,2步配置成功说明frp服务端frp客户端已经建立了连接
通过刚刚的配置
本地主机连接公网: 106.55.123.123:6000 等价于连接 222.200.123.123:22
本地主机连接公网: 106.55.123.123:7001 等价于连接 222.200.123.123:3389
这里的本地主机可以是任意主机,只要可以连接公网即可!!!

3. 本地主机(第三台主机)连接服务器

SSH服务为例: 本地主机需要连接内网服务器的ssh服务之前是连接222.200.123.123的22端口,现在只要通过连接106.55.123.123的6000端口即可
在这里插入图片描述
我这里是使用xshell连接服务器主机222.200.123.12322端口
注意: 利用本地主机连接公网时 (必须保证frp服务端和客户端都是开启状态, 而且是成功开启的, 稍后我们会讲解如何后台运行)

3.1 设置连接信息

我们通过连接frp服务端的106.55.123.123的6000端口即可访问
222.200.123.123的22端口

3.2 设置用户名信息

这里是frp客户端的用户名和密码
这里是frp客户端的用户名和密码
这里是frp客户端的用户名和密码


如下图所示表示成功访问服务器主机: (内网穿透成功)

4. frp 客户端服务端放在后台运行

在进行后台运行之前最好是证明你前面三步都是成功的,不建议一开始就后台运行,因为这样如果出现问题比较难发现

4.1 开启服务端后台运行

frp服务端后台运行(按Ctrl+C退出后会依然运行)

nohup ./frps -c frps.ini &

查看是否运行成功

ps -ef | grep frp

如下所示表示服务端后台运行成功

同时frp目录下会多一个nohup.out文件

关闭后台运行(查到到frps进程号关闭即可)

kill -9 12096

4.2 开启客户端后台运行

frp客户端后台运行(按Ctrl+C退出后会依然运行)

nohup ./frpc -c frpc.ini &

如下所示表示frp客户端后台成功运行

同时frp目录下会多一个nohup.out文件

关闭后台运行(查到到frpc进程号关闭即可)

kill -9 15166

5. PyChram

如果你使用pychram连接,同理
将以前的222.200.123.123的22端口(私网)
改为106.55.123.123的6000端口即可(公网)

如果你还遇到其他问题可以参考以下博客
参考博客:
博客1(推荐): https://sspai.com/post/52523
博客2: https://blog.csdn.net/qq_36981760/article/details/115713179
博客3: https://blog.csdn.net/qq_36981760/article/details/115713179
参考视频
(推荐,比较详细): https://www.bilibili.com/video/BV1p94y1y7ft/

本人水平有限,如有错误欢迎指正交流!!!

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值