使用frp实现内网穿透


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


转载请注明出处:bestsort 的博客

准备工作

  • 一台有公网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.ini
frpc.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 目录下的文件了,会要求输入已设置好的用户名和密码(如果没设置则可直接查看)。

posted @ 2019-03-13 13:52  秃头大师  阅读(247)  评论(0编辑  收藏  举报