前言

最近博主实验室要搬家,因为服务器只有连接内网才能使用,所以搬走之后就无法在公网连接使用服务器,确实是让人非常苦恼,所以本文将会主要讲解如何使用公网服务器 SSH 连接内网服务器

系统配置

  • 内网服务器:Ubuntu 18.04
  • 公网服务器:CentOS 7.9

方案

下面汇总公网访问内网服务的各种方式

1、使用 TeamViewer 等远程桌面。但是需要双方都要安装TeamViewer软件,且版本要一致。虽然可用,但是比较麻烦

2、使用花生壳软件进行DDNS解析。虽然可用,但免费版本有带宽限制,使用效果不理想。

3、搭建 frp 服务器进行内网穿透。可以达到不错的速度,且可以开放任何想要的端口,可以让处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议,推荐使用。

综上所述,本文将会在公网服务器搭建 frp 服务,进行内网穿透,达到 SSH 连接内网服务器的效果

image-20231009221113810

介绍

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网

注:内网穿透,简单地说就是内网的数据让外网可以获取,可以映射到公共网络上,这样就可以在公共网络上访问内网的数据。

官网仓库:fatedier/frp (github.com)

官方文档:文档 | frp (gofrp.org)

安装部署

本文对应官方文档:通过 SSH 访问内网机器 | frp (gofrp.org)

下载

我们需要分别在客户端和服务端下载 frp 安装包

bash
复制代码
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz 

然后解压安装包

bash
复制代码
tar -zxvf frp_0.51.3_linux_amd64.tar.gz

展示文件内容

bash
复制代码
# ls -l
total 30784
-rw-r--r--. 1 1001 docker    11358 Aug 14 12:09 LICENSE
-rwxr-xr-x. 1 1001 docker 14290944 Aug 14 12:04 frpc
-rw-r--r--. 1 1001 docker      126 Aug 14 12:09 frpc.ini
-rw-r--r--. 1 1001 docker    12669 Aug 14 12:09 frpc_full.ini
-rwxr-xr-x. 1 1001 docker 17186816 Aug 14 12:04 frps
-rw-r--r--. 1 1001 docker       26 Aug 14 12:09 frps.ini
-rw-r--r--. 1 1001 docker     5933 Aug 14 12:09 frps_full.ini

其中 frpc 是内网服务器用的,frps 是公网服务器用的

配置

最后我们需要填写配置文件,首先我们修改公网服务器上的 frps.ini 文件

ini
复制代码
# frps
[common]
bind_port = 7000

然后在内网服务器上修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x

ini
复制代码
# frpc
[common]
# tls_enable 防止启动报错 login to server failed: EOF
tls_enable = true
server_addr = x.x.x.x
server_port = 7000

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

注:公网服务器需要开启 6000 7000 端口防火墙和安全组配置

最后分别启动客户端和服务端

bash
复制代码
# 服务端
./frps -c ./frps.ini
# 客户端
./frpc -c ./frpc.ini

然后我们在本地使用 SSH 访问内网机器,假设使用 test 用户连接

bash
复制代码
ssh -oPort=6000 test@x.x.x.x
# 或是
ssh test@x.x.x.x:6000

frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口

系统配置

最后我们可以通过 systemd 启动服务并且配置开机自启,方便后续操作

官方配置文档:使用 systemd | frp (gofrp.org)

服务端

首先我们可以在 frp 服务端创建并编辑 frps.service 文件

bash
复制代码
vim /etc/systemd/system/frps.service

写入内容

bash
复制代码
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini

[Install]
WantedBy = multi-user.target

其中复制文件命令如下

bash
复制代码
cp ./frps /usr/bin/frps
mkdir /etc/frp
cp ./frps.ini  /etc/frp/frps.ini

常用命令

bash
复制代码
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps

配置 frps 开机自启

bash
复制代码
systemctl enable frps

客户端

此处与服务端配置基本类似,所以简单叙述

bash
复制代码
vim /etc/systemd/system/frpc.service
bash
复制代码
[Unit]
Description = frp client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini

[Install]
WantedBy = multi-user.target
bash
复制代码
sudo cp ./frpc /usr/bin/frpc
sudo mkdir /etc/frp
sudo cp ./frpc.ini  /etc/frp/frpc.ini
bash
复制代码
sudo systemctl start frpc
sudo systemctl enable frpc

​最后

为了帮助大家更好的学习网络安全,小编给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,所有资料共282G,朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取(如遇扫码问题,可以在评论区留言领取哦)~

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

因篇幅有限,仅展示部分资料

2️⃣视频配套资料&国内外网安书籍、文档

① 文档和书籍资料

② 黑客技术

因篇幅有限,仅展示部分资料

👉CSDN大礼包🎁:全网最全《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)👈

3️⃣网络安全源码合集+工具包

4️⃣网络安全面试题

5️⃣汇总

所有资料 ⚡️ ,朋友们如果有需要全套 《网络安全入门+进阶学习资源包》,扫码获取~

👉CSDN大礼包🎁:全网最全《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)👈

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐