IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    使用frp实现内网ssh穿透

    Derobukal发表于 2024-01-05 14:40:41
    love 0

    最近需要远程访问一台虚拟机内的Linux,因为虚拟机没有公网IP,因此选择使用frp转发ssh流量的方式来实现远程访问。首先访问frp的release页面并根据操作系统和CPU下载相应的版本,之后解压得到frpc和frps文件。

    frps是服务端版本,它需要部署在一台拥有公网IP的主机上,它的配置frps.ini如下

    [common]bind_port = 10625token = y9XBLEu2ymW1s5N3W7OuDPhUG4IohVmQ

    其中bind_port代表了它所监听的端口号,而token则是客户端连接时需要用到的验证信息。

    frpc是客户端版本,它的配置frpc.ini如下

    [common]server_addr = 100.26.21.285server_port = 10625authentication_method = token token = y9XBLEu2ymW1s5N3W7OuDPhUG4IohVmQ[ssh]type = tcplocal_ip = 127.0.0.1 local_port = 22remote_port = 10626

    common代表通用配置,它包含了4个配置

    1. 作为服务端的远程主机的公网IP
    2. frps在远程主机所监听的端口号
    3. 验证方式,这里是通过token进行验证
    4. 验证的token值

    ssh代表了进行ssh转发的设置,它的含义如下

    1. 转发的方式,这里是tcp协议
    2. 本地主机的地址,因为访问的就是当前机器,设为127.0.0.1
    3. 本地ssh服务所监听的端口,默认端口22
    4. 远程(服务端)进行ssh流量转发时所监听的端口

    有了如上的配置之后,我们可以在远程主机上使用该配置启动frps

    ./frps -c ./frps.ini

    需要注意远程主机的10625和10626端口需要关闭防火墙的设置,以保证可以通过外部进行访问。之后启用本地的客户端

    ./frpc -c ./frpc.ini

    本地机器如果没有安装ssh服务,则需要先安装ssh服务。启动了服务端和客户端之后,可以在服务端看到客户端成功连接的日志信息,之后通过

    ssh ray@100.26.21.285 -p 10626

    命令就可以成功访问虚拟机内Linux的ssh服务了,整个网络流程大致如下

    1. 客户端提前通过服务端的10625端口已经创建好了客户端与服务端的连接
    2. 用户访问远程主机frps的10626端口
    3. 远程主机上的frps通过与客户端的连接将流量发给frpc
    4. frpc将流量转发给本地的ssh服务
    5. 用户最终可以操作本地的ssh

    参考

    使用frp端口映射实现内网穿透(SSH、HTTP服务)



沪ICP备19023445号-2号
友情链接