win10下用frp内网穿透实现ssh远程连接linux服务器

本文详述如何在Win10环境下使用frp进行内网穿透,实现外网SSH远程连接内网Ubuntu服务器的过程。包括公网IP申请、端口映射、frp配置及VSCode远程开发设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

win10下用frp内网穿透实现ssh远程连接linux服务器

ftp可以利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。由于疫情原因不能回实验室,teamviewer又说检测到商业用途,连接受限,索性自己搭建小型服务器。

拟实现功能:外网通过ssh访问内网机器,内网机器操作系统为ubuntu 16.04

准备

  1. 具有公网ip的服务器

公网ip服务器可以是阿里云,也可以是自己的电脑。如果打算用自己的电脑搭建服务器得去向运营商申请公网ip,申请教程网上很多,博主家里宽带是电信的,打10000转人工服务和他申请后重启下光猫就好了(这里有个小坑,电信默认一段时间后光猫自动断线重连,我这是60小时,这会导致申请的公网ip变动,打电话申请的时候最好让他关了)。

申请到公网ip后下一步要做端口映射。

端口映射

首先得先确定家里网络拓扑结构,拿我家举例,电信的光纤连接到家里的光猫,光猫只连了一个路由器,路由器下连着家里各种上网设备。注意一下,在路由器的局域网中路由器的ip是192.168.0.1,在光猫的局域网中路由器的ip是192.168.1.2
在这里插入图片描述
确定好网络拓扑后先去查申请到的公网ip地址,这里方法很多,可以百度“ip”,也可以像我去光猫的设置页面看(反正之后还得在这设置端口映射),电信的光猫设置页面是192.168.1.1,登录的账号密码在光猫背面有。进去后在高级设置里找到网关设置,可以在WAN IP中看到自己的公网ip,我这个就是117开头的

在这里插入图片描述
接着去左边的端口映射,“虚拟服务名称”随便填一个就行,方便记忆即可,局域网ip填下一级局域网的ip,服务协议选TCP就行,内部端口和外部端口映射关系满足:117.x.x.x(我家公网IP):外部端口=局域网IP:内部端口。
在这里插入图片描述
按照我家的拓扑结构,假如我想将公网IP的8888端口映射到电脑上的8888端口就需要配置两个端口映射,从光猫到路由器和从路由器到电脑。

  1. 在光猫上配置端口映射 117.x.x.x:8888 -> 192.168.1.2:abcd。这里192.168.1.2路由器在光猫的局域网的IP,这个abcd是任意一个端口号;
  2. 在路由器上配置端口映射192.168.0.1:abcd -> 192.168.0.103:8888。这里192.168.0.1是路由器在路由器局域网内的ip地址,abcd是第一步中的那个任意端口号,192.168.0.103是我电脑在路由器局域网内的ip地址。

第一步已经完成了,第二步进路由器的设置网站上,我家的是http://tplogin.cn,应用管理里面有个虚拟服务器,在里面添加端口映射即可,这里外部端口就是第2步的abcd,内部端口就是8888,ip地址就是电脑的ip地址。由于上一张图哪里我设置的abcd就是8888,因此我这外部端口也填8888,协议类型不用选,最后保存即可。
在这里插入图片描述
端口映射至此结束,接下来配置frp

frp配置

知乎上有篇文章讲的很好,我参考这个短时间内就搭建好了。五分钟配置frp 内网穿透

首先去github上下载frp,frp下载,选择服务器和客户端对应的版本,像我是打算用win10做服务器,连接在内网的linux深度学习服务器,就下载了windows_amd64.zip和linux_amd64.tar.gz。
在这里插入图片描述
下载完成后先配置服务端(本机win10):
解压windows_amd64.zip那个文件,进去后修改配置文件 frps.ini,这个7000可以随意设置,不过最好在10000以上,我这只是为了演示,就不改了。

[common]
bind_port = 7000  #frp服务端端口

复制完了后在命令行或powershell里启动即可

.\frps.exe -c .\frps.ini

接下来配置客户端,把linux_amd64.tar.gz发给linux服务器,该解压的解压,(本人linux小白解压代码都查了半天,这里附上tar.gz的解压代码)

tar -zxvf xxx.tar.gz

解压完了后修改配置文件 frpc.ini,

[common]
server_addr = 117.x.x.x   #frp服务端地址,可以填ip或者域名,我的公网ip是117.x.x.x
server_port = 7000      #frp服务端端口,即填写服务端配置中的 bind_port

[ssh1]
type = tcp              #连接类型,填tcp或udp
local_ip = 127.0.0.1    #填127.0.0.1或内网ip都可以
local_port = 22         #需要转发到的端口,ssh端口是22
remote_port = 5000      #frp服务端的远程监听端口,即你访问服务端的remote_port就相当于访问客户端的 local_port,如果填0则会随机分配一个端口

最后启动客户端,其中,nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行;“&”可以让你的命令在后台运行。

$ nohup ./frpc -c frpc.ini &

接下来回到之前讲的端口映射部分,把公网ip上的5000端口与7000端口映射成本机的5000端口与7000端口,这里就不做演示了。

配置到此结束,想访问linux服务器只需在命令行里输入命令,然后输入linux服务器上user的密码即可建立ssh连接,5000是remote_port

ssh -p 5000 user@117.x.x.x

但由于我这台电脑既当服务器,又要通过它远程Linux服务器,而电信光猫不支持在内网访问公网ip,因此命令还需改成本机的5000端口,即

ssh -p 5000 user@127.0.0.1
或者
ssh -p 5000 user@localhost

VS Code远程开发

配置好ssh后光靠命令行去写程序无疑痛苦极了,pycharm支持远程ssh开发,但这是专业版才拥有的高贵功能,博主一介穷逼于是转战VS Code了(它不香吗?)

这里就不继续说下去了,附上链接,各位看客有兴趣可以去设置,商店里下载remote-ssh就行。连接时遇到了一个小坑,不能用ssh -p 5000 user@localhost连接,必须得是ssh -p 5000 user@127.0.0.1。

### 配置FRP进行内网穿透以访问SSH服务 为了使用FRP实现内网穿透从而能够通过SSH安全地连接至位于私有网络中的服务器,需分别设置FRP客户端(`frpc`)和服务端(`frps`)。 #### 设置FRP服务端(frps) 确保已安装并运行了FRP的服务端部分。通常情况下,在公网上可被访问的一台机器上部署此组件,并指定监听的端口用于接收来自`frpc`的数据转发请求。基本配置如下: ```ini [common] server_addr = 0.0.0.0 server_port = 7000 ``` 上述配置使得FRP服务端侦听所有可用接口上的7000端口[^4]。 #### 编辑FRP客户端(frpc)配置文件 对于希望暴露给外部世界的每项内部资源(本例中为SSH),都需要定义一个新的条目于`frpc.ini`之中。针对SSH服务的具体配置应类似于下面这样: ```ini [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 ``` 这段代码指定了当有人尝试经由公网IP地址以及所设定的远端端口号(此处设为6000)建立TCP连接时,流量会被重定向到本地环回地址上的标准SSH端口22[^3]。 完成以上两步之后,启动或重启FRP客户端程序使新的配置生效。此时应该可以从互联网任意位置利用命令行工具如OpenSSH发起对目标主机的安全shell会话: ```bash ssh -p 6000 username@public_server_address ``` 这里的`username`代表你在远程Linux系统的用户名;而`public_server_address`则是承载着FRPS实例那台计算机的真实公共IPv4/v6地址或是域名[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值