参考资料: 优雅玩转实验室服务器(七)优雅地使用ssh或者http访问内网服务器——frp内网穿透教程 如何优雅地访问远程主机?SSH与frp内网穿透配置教程
需求
在公网上使用 ssh 访问某台内网服务器。
原料
硬件
为了达到这个目的,在硬件上,我们的读者需要准备如下三件东西:
- 一台公网服务器,它的 IP 可以在任何能上网的机器上被 ping 到。(可选择一些云服务器,有的自带公网IP,本文使用腾讯云操作)
- 一台实验室服务器,它只能在实验室内网被访问。
- 一台你自己的电脑,它能 ping 到公网服务器,但是当你带着它出去玩时,它无法 ping 到实验室服务器。
软件
使用的软件就是内网穿透界鼎鼎有名的 frp
软件安装
^42c71b
我们记我们的公网服务器为 pub (public server),实验室服务器为 loc (local server)。
软件下载地址前往github获取
#软件下载
wget -c https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
#解压
tar -xvf frp_0.58.1_linux_amd64.tar.gz
进入 frp_0.58.1_linux_amd64 后,我们会看到如下几个文件:
frpc: frp 客户端执行程序frpc.toml:frp 客户端配置文件frps:frp 服务端执行程序frps.toml:frp 服务端配置文件LICENSE:frp 软件开源协议,不用管
对于我们这个例子来说,
pub 用于转发网络请求实现内网穿透,所以它是服务端,使用 frps。
loc 是被转发的对象,所以是客户端,使用 frpc. 本文所有技术的整体访问模型如下:
SSH 内网穿透
pub端
软件运行配置
首先在 pub 上,进入解压后的 frp 文件夹。修改 frps.toml 如下:
bindPort = 7000
#已使用mv命令将frp_0.58.1_linux_amd64文件夹改名为frps
lighthouse@VM-0-8-ubuntu:~$ ls
frps
lighthouse@VM-0-8-ubuntu:~$ ls
frps
lighthouse@VM-0-8-ubuntu:~$ cd frps
lighthouse@VM-0-8-ubuntu:~/frps$ ls
frpc frpc.toml frps frps.toml LICENSE
lighthouse@VM-0-8-ubuntu:~/frps$ cat frps.toml
bindPort = 7000
lighthouse@VM-0-8-ubuntu:~/frps$
bindPort 用于和 frpc 进行绑定。
在后台执行如下指令:
#注意是小写c哦
./frps -c ./frps.toml
输出如下日志,代表 frps 启动成功:
2024-03-20 22:56:58.972 [I] [frps/root.go:105] frps uses config file: ./frps.toml
2024-03-20 22:56:59.041 [I] [server/service.go:225] frps tcp listen on 0.0.0.0:7000
2024-03-20 22:56:59.041 [I] [server/service.go:292] http service listen on 0.0.0.0:8080
2024-03-20 22:56:59.041 [I] [frps/root.go:114] frps started successfully
2024-03-20 22:57:12.775 [I] [server/service.go:563] [11abba605bc7fe77] client login info: ip [58.211.218.74:64089] version [0.55.1] hostname [] os [linux] arch [amd64]
2024-03-20 22:57:12.806 [I] [proxy/tcp.go:82] [11abba605bc7fe77] [ssh] tcp proxy listen port [7001]
2024-03-20 22:57:12.806 [I] [server/control.go:401] [11abba605bc7fe77] new proxy [ssh] type [tcp] success
防火墙放行端口(展示腾讯云服务器操作)
在你的 pub 防火墙中,放行如下两个端口:bindPort,remotePort。在我的例子中,是 7000 和 7001 这两个端口。
loc端
按照[[01 内网穿透#^42c71b|软件安装]]流程安装frp软件
在 loc 上,进入解压后的 frp 文件夹。修改 frpc.toml 如下:
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "lab"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 7001
- 其中 serverAddr 是
pub的公网 IP,serverPort 和 刚刚pub上的 bindPort 保持一致。 - 请保证 localPort 是
loc上的 ssh 服务端端口号,此处填写 22 是因为 sshd 默认开放的端口就是 22。 - remotePort 是我们后面访问
pub时需要使用的转发端口。
然后,在后台启动 frpc :
#注意是小写c哦
./frpc -c ./frpc.toml
输出如下日志代表 frpc 启动成功:
2024-03-20 21:17:55.986 [I] [sub/root.go:142] start frpc service for config file [./ssh.toml]
2024-03-20 21:17:55.986 [I] [client/service.go:287] try to connect to server...
2024-03-20 21:17:56.087 [I] [client/service.go:279] [11abba605bc7fe77] login to server success, get run id [11abba605bc7fe77]
2024-03-20 21:17:56.087 [I] [proxy/proxy_manager.go:173] [11abba605bc7fe77] proxy added: [ssh]
2024-03-20 21:17:56.120 [I] [client/control.go:170] [11abba605bc7fe77] [ssh] start proxy success
你的电脑
最后,打开你的电脑,输入:
ssh loc的用户名@pub的公网IP -p 7001
效果如下:
成功进来啦!