使用frp实现内网穿透

最近碰见了一件事情,我宿舍的电脑想通过ssh远程连接到实验室,但是实验室的机器没有公网ip,不过能访问外网,经过一番折腾后,终于成功的用frp实现了内网穿透,连上了实验室的电脑 因为当时查各种资料花费时间挺多的,这里把我的经验分享出来,供大家参考


转载请注明出处:bestsort.cn


准备工作

  • 一台有公网ip的服务器
  • 需要连接的内网机器 我的机器类型:
  • 内网机器:Ubuntu18.04
  • 服务器:Ubuntu16.04
  • 部署好后连接时的主机:Win10 的 Ubuntu 子系统

这里如果没有服务器的话可以去阿里云,腾讯云等租一台,学生机一个月10r,并不贵.

下载并部署frp

frp已经在2018年3月更新到0.25版本了,这里采用的便是此版本

  1. 先在服务器内网机器上下载好frp

    wget https://github.com/fatedier/frp/releases/download/v0.25.0/frp_0.25.0_linux_amd64.tar.gz

  • frpsfrps.ini 放到具有公网 IP 的机器上。
  • frpcfrpc.ini 放到处于内网环境的机器上。
  1. 解压 tar -zxvf frp_0.25.0_linux_amd64.tar.gz

    公网机器

    登录,然后执行以下命令 cd frp_0.25.0_linux_amd64/ sudo vim frps.ini

修改frps.ini为如下内容,保存并退出

 # frps.ini
[common]
bind_port = 7000

最后启动frps并设置后台运行 nohup ./frps -c ./frps.ini & 当看到这一行时,我们就可以ctrl+c退出了: nohup: 忽略输入并把输出追加到'nohup.out' 如果想确定frp是否后台运行,可以使用以下命令查看 ps -ef | grep frp


内网机器

执行以下命令 cd frp_0.25.0_linux_amd64/ sudo vim frpc.inifrpc.ini修改为如下形式:

 # frpc.ini
[common]
server_addr = x.x.x.x #这里填自己公网机器的ip
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000#用于登录的端口号

保存并退出 然后在 frp_0.25.0_linux_amd64/目录下输入./frpc -c ./frpc.ini并运行,显示有success即可

连接到内网

frp部署好后,我们只需要ssh 内网用户名@公网ip -p -6000,即可成功登录

文件访问

如果要需要用到文件访问,则frpc.ini中的内容如下:

# frpc.ini
[common]
server_addr = x.x.x.x#地址填自己服务器ip
server_port = 7000

#以下内容为文件访问所要添加的,如果想远程连接,把上面的[ssh]模块添加在后面即可
[test_static_file]
type = tcp
remote_port = 1234#这里默认的6000端口我用于内网穿透了,就换了1234端口
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = /tmp/file#绝对路径
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
#plugin_strip_prefix = static 可不选,如要使用前缀去掉注释即可
plugin_http_user = abc    #访问文件所需要的用户名,可不选
plugin_http_passwd = abc  #密码,可不选

然后我们就可以通过浏览器访问 http://x.x.x.x:1234来查看位于 /tmp/file 目录下的文件了,会要求输入已设置好的用户名和密码(如果没设置则可直接查看)。

觉得文章不错的话可以请我喝一杯茶哟~
  • 本文作者: bestsort
  • 本文链接: https://bestsort.cn/2019/04/27/367/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-SA 许可协议。转载请注明出处!并保留本声明。感谢您的阅读和支持!
-------------本文结束感谢您的阅读-------------