简介
校园网、公司内网中的设备一般是没有公网ip的,所以没办法用SSH直接连接。但是平时VSCode远程连接调调代码啥的都是通过SSH来连接的,平时不在学校或者公司的时候会很麻烦。虽然说VPN、向日葵花生壳之类的方法都能解决这个问题,但是这些方法不是麻烦就是贵或者不安全。frp只需要一台有公网ip的服务器就能实现外网SSH访问,相对来说比较简单。
具体步骤
准备工作
- 内网需要访问的设备A(linux或win10)
- 云服务器B(本人使用了阿里云的服务器CentOS6,不同云服务器应该都差不多,最大的区别应该是在安全组默认配置上面,只要能够有固定的公网ip就行)
- 个人电脑,平时没办法再内网使用的设备B
下载解压fpr
在A和B中下载fpr,github的下载链接为:https://github.com/fatedier/frp/releases。下载最新版本就行了。以frp_0.44.0_linux_arm64.tar.gz为例。
进入对应地址并解压,在linux中解压命令为:
tar -zxvf frp_0.44.0_linux_arm64.tar.gz
A中删除frps为前缀的三个文件,B中删除frpc为前缀的三个文件。
配置fpr
对于B,进入到 frp_0.44.0_linux_arm64 目录中,使用vim打开frps.ini文件,并修改为:
[common] server_addr = 127.0.0.1 server_prot = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
其中server_port为B输出到A的端口,而remote_port为C输入到B的端口。
对于A,打开frpc.ini文件,并修改为:
[common] server_addr = xx.xx.xx.xx server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
其中xx.xx.xx.xx为服务器B的地址。
启动服务
最简单的情况就是可以直接启动服务了,首先启动云服务器B的服务,进入 frp_0.44.0_linux_arm64 目录,并输入(建议使用nohub、tmux、screem其中之一来维持服务在后台运行):
./frps -c ./frps
然后启动A,也是一样的步骤:
./frpc -c ./frpc
访问方法
在C的cmd中输入命令:
ssh -p 6000 A_user_name@xx.xx.xx.xx
并输入A的密码,就能成功访问服务器A了。
可能的问题
- 连接超时,验证一下安全组server port和remote port对应的端口有没有打开
- 客户端拒绝访问,可能是A没有启动sshd(linux服务器一般没有这个问题),如果在win10碰到了这个问题,在电脑的 设置->应用 中添加openssh,然后在管理员权限下的cmd开启sshd,命令是```net start sshd```.
最后
其实一开始我的目标是反代再通过端口转发直接通过云服务器和内网的跳板访问内网服务器的,这样比较方便也安全,但是最终反代之后似乎是不能将反代的端口再转发所以失败了。虽然配置很方便,但是实际使用非常的不优雅!