利用frp工具远程ssh连接内网服务器
1.frp
frp是一款反向代理工具,支持tcp、udp协议。与ngrok、nps、holer等相比具有搭建简单,易操作的忧点;与花生壳工具相比,具有不收费、不限流等优点。本文主要记录下利用frp从外网ssh访问内网服务器。
2.准备工作
- 一台具有公网IP的服务器
- 内网服务器
- frp 下载地址
3.操作流程
1.公网服务器和内网服务器上下载frp
wget https://github.com/fatedier/frp/releases/download/v0.31.1/frp_0.31.1_linux_amd64.tar.gz
2.解压frp
tar -zxvf frp_0.31.1_linux_amd64.tar.gz
3.进入解压目录
cd frp_0.31.1_linux_amd64
4.修改配置文件
#公网服务器上配置文件frps.ini,可以不用修改
# frps.ini
[common]
bind_port = 7000
#内网服务器上修改配置文件frpc.ini
vim frpc.ini
# frpc.ini
[common]
server_addr = x.x.x.x #x.x.x.x是公网服务器IP
server_port = 7000 #与服务端bind_port一致
[ssh]
type = tcp #连接协议
local_ip = 127.0.0.1 #内网服务器ip(无需修改)
local_port =22 #ssh默认端口号
remote_port = 7001 #自定义的访问内部ssh端口号
5.启动frp服务
#公网服务器端
#临时启动
./frps -c ./frps.ini
#后台保持启动
nohup ./frps -c ./frps.ini &
#内网服务器端
#临时启动
./frpc -c ./frpc.ini
#后台保持启动
nohup ./frpc -c ./frpc.ini &
6.通过ssh访问内网服务器
#假设是root用户登录
ssh root@x.x.x.x -p7001
#也可以用putty,xmanager等第三方登录工具登录
4.中途可能出现的问题
1.连接被拒绝
解决办法:关闭内网服务器的防火墙;
或者通过:firewall-cmd --add-port=xxxx/tcp --permanent 开放端口
firewall-cmd --reload 重新加载防火墙即可。
2.需要连接多台内网服务器
#内网服务器上修改配置文件frpc.ini
vim frpc.ini
# frpc.ini
[common]
server_addr = x.x.x.x #x.x.x.x是公网服务器IP
server_port = 7000 #与服务端bind_port一致
[ssh] #此处名字需要修改一下
type = tcp
local_ip = 127.0.0.1
local_port =22
remote_port = 7001 #端口号也要修改一下
5.参考文献
https://github.com/fatedier/frp/blob/master/README_zh.md
https://www.vediotalk.com/archives/505