SSH及HTTP内网穿透实践

2,504 阅读1分钟

因云服务资源有限,迁移服务到内网物理服务器并虚拟化多台机器部署不同服务,但仅有一个对外ip,本文记录下基于frp的内网SSH及HTTP映射。

一、frp安装

  1. 使用arch命令查看服务器架构

  2. 下载文件包 wget https://github.com/fatedier/frp/releases/download/${release}/${package}

  • 解压文件包
tar -zxvf ${package}
cp -r ${package} frp

二、服务端配置

服务端可以被公网访问。

我们实验室只有8001-8030共计三十个端口,因此配置如下:

vi frps.ini

[common]
bind_port = 8005
dashboard_port = 7500
token = 12345678
vhost_http_port = 8004
vhost_https_port = 10443
dashboard_user = admin
dashboard_pwd = admin

大家可以根据团队实际情况配置。

  • bind_port表示客户端和服务端连接的端口,客户端配置需要保持一致
  • dashboard_port是服务端仪表盘的端口
  • token是用于客户端跟服务端连接的口令
  • vhost_http_port是服务端的http服务端口
  • vhost_https_port是服务端的https服务端口

三、客户端配置

客户端通过服务端被公网访问。

vi frpc.ini

[common]
server_addr = xxx # 公网ip
server_port = 8005 # 与服务端保持一致
token = 12345678

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8006

[web]
type = http
local_port = 8004
custom_domains = xxx # 公网ip或域名

四、服务验证

我们先打开dashboard查看配置是否生效:

SSH

913dbb46780a40f433ba7b0385da3f4.png

在非客户端且具备访问公网能力的机器执行:

ssh -p 8006 root@${服务端公网ip}

ce5bf92497d4fa4154174fdfc06993e.png 成功连接。

HTTP

1656666319120.png

我们在客户端运行一个测试web服务:

java -Dserver.port=8004 -jar springboot-web-demo-1.0-SNAPSHOT.jar

调用http://服务端公网ip:8004/hello?name=WinsonWu:

3a34801dcc410350257122352998d06.png

正常返回。

五、参考资料

内网穿透,使用frp就够了