当前位置: 首页 > news >正文

Docker 容器内进行 frp 内网穿透

开始之前需要有一台可以进行公网访问的服务器

下载安装 frp

这个直接到 github 官网就可以下载了
在这里插入图片描述
点击Releases 就可以查看到可以下载的源,根据自己电脑的型号进行选择就好了。
在这里插入图片描述

linux服务器上下载

如果是在linux的服务器上的话可以直接通过wget进行下载
例如:

wget https://github.com/fatedier/frp/releases/download/v0.63.0/frp_0.63.0_android_amd64.tar.gz

然后你就会得到一个tar.gz的一个压缩包
在这里插入图片描述
然后把压缩包进行解压

tar -zxvf frp_0.63.0_android_amd64.tar.gz

解压完后你就可以在本地看到一个frp_0.63.0_android_amd64的文件夹
在这里插入图片描述
文件夹中一般有 4 个文件,frpc 开头是进行客户端连接的,也就是你要穿透的电脑运行的,而frps是开头的是运行在服务端的,也就是有公网 IP 的服务器上面的

服务端配置

服务端的配置全部写在文件frps.toml 里面(有可能是frpc.ini),最开始的设置只有一个,那就是这个服务端运行绑定的端口是哪里,这里默认是 7000 端口,我们不用改,只不过在服务器的控制台中需要把这个端口给开放,不然客户端无法访问。
在这里插入图片描述
如果你只是需要简单的进行测试,看是否能够跑通内网穿透,那么你就不用再进行其他的配置了。
如果你是需要长期使用的话还需要一些其他的配置,更利于我们使用,例如token防止服务器被劫持了。

同样这些设置都是放在frps.toml里面的

# 最新设置请参考官网 https://gofrp.org/zh-cn/docs/features/common/configure/
# 服务端和客户端的TCP通信端口, 建议1024以上端口
bind_port = 7000
# 客户端访问服务端的密码
token = abcdefg
# 服务端仪表盘的端口, 可以用浏览器访问查看
dashboard_port = 7500
# 服务端仪表盘的用户密码
dashboard_user = frp
dashboard_pwd = frp123# 日志保存设定, 保存位置、保存时长
log_file = ./frps.log
log_level = info
log_max_days = 7

如果要长期进行访问的话建议把token设置的强一点,不容易攻破

启动服务端

启动服务端非常简单,把二进制文件frps运行起来就好了。

  • 如果只是简单的单词运行
# 在frp的目录下
./frps -c frps.toml
  • 如果要后台运行
# 同样在frp目录下,使用nohup,控制台的输出会保存在当前文件夹的nohup.out文件中,查看输出即可了。
nohup ./frps -c frps.toml &

这样服务端就能运行起来啦!

如果启动失败,有可能是端口没开放,7000端口进的查看哦,有的可能防火墙也没开放,记得检查。两层一个云服务提供商的安全策略,一个就是自己服务器的防火墙

在这里插入图片描述

客户端配置

客户端的配置就是frpc.toml文件
初始的内容如下:
在这里插入图片描述
下面对配置进行说明

serverAddr = "x.x.x.x"
serverPort = 7000[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

启动客户端

# 后台启动
# 同样在frp目录下,使用nohup,控制台的输出会保存在当前文件夹的nohup.out文件中,查看输出即可了。
nohup ./frpc -c frpc.toml &
# 前台启动
# 在frp的目录下
./frpc -c frpc.toml

Windows 操作无异,一样的修改配置文件,然后运行就好了

踩坑

此次进行 frp 内网穿透,目标是穿透 Docker 容器,使得我能够通过外网直接访问我创建的容器

前面的下载步骤,以及配置服务端很简单,一下就配置好了,但是当我要进行连接的时候,就算我设置了Docker 容器的密码,也是不行,总是出现 Authentication Rejected 拒绝访问。

但是我明明都已经穿透好了,为什么不行呢?

我进行了一下对比实验,我不进行ssh连接,看看内网穿透可不可行,就能发现到底是软件问题,还是本身Docker就不能进行穿透了。

通过下载nginx打开端口80,发现是可以进行内网穿透的,所以问题不是在软件上,在 Docker 镜像的设置上面。

经过多方查找,终于找到原因:

  • Ubuntu Lastest 镜像下载的 ssh 工具不允许通过密码连接,所以要打开密码连接的设置。

    • /etc/ssh/sshd_config中的 PasswordAuthentication yes 的注释删掉.
      在这里插入图片描述
  • 同时,ssh 默认不运行进行root 用户进行连接

    • 需要把/etc/ssh/sshd_config#PermitRootLogin prohibit-password 下面添加一行 PermitRootLogin yes 当然你把prohibit-password改成yes也可以,当然了这样的话就要去掉注释了。
      在这里插入图片描述
http://www.dtcms.com/a/316698.html

相关文章:

  • 关于怎么知道linux(ubuntu)系统交叉编译器的命令的方法:
  • web-vue工作流程
  • 从AUTOSAR角度理解CAN以及CANFD
  • 权值树状数组
  • 政务信息化项目建设管理办法的主要内容有哪些
  • 防火墙和网闸的区别,什么场景下,需要用到网闸?
  • iOS混淆工具有哪些?技术演进与选型趋势全景解析
  • 《C++》继承完全指南:从入门到精通
  • BeanFactory 和 ApplicationContext 的区别?
  • python-自定义抠图
  • 【分析学】内积空间中的线性算子
  • lumerical——多模干涉耦合器(MMI)
  • 机械学习--决策树(实战案例)
  • lumerical——Y分支功分器
  • Linux学习-数据结构(链表)
  • GISBox一键转换IFC到3DTiles
  • 【PCIE044】基于 JFM7VX690T 的全国产化 FPGA 开发套件
  • 分布式网关技术 + BGP EVPN,解锁真正的无缝漫游
  • 防火墙安全策略练习
  • PBX Feature Code(功能码)
  • 【DAB收音机】DAB系统架构介绍
  • mq_unlink系统调用及示例
  • 图像处理控件Aspose.Imaging教程:使用 C# 将 SVG 转换为 EMF
  • C++ 变量初始化方式总结 | 拷贝初始化 | 列表初始化 | 值初始化
  • 【PCB】3. 信号部分设计
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘keras’问题
  • Nginx入门:高性能Web服务器详解
  • 商用密码应用安全性评估(密评)实施指南:法律依据与核心要点解析
  • 神坛上的transformer
  • 如何测量滚珠花键的旋转方向间隙?