内网穿透
1. 前提条件
想要通过公网访问到位于校园网下的主机时,由于目标主机没有公网ip,无法直接通过SSH连接到远程主机,此时便需要使用内网穿透
想要配置内网穿透,首先必须先要有一台具有公网ip的服务器,如阿里云、腾讯云等服务器
2. frp工作原理
frp为内网穿透用到的开源软件,分为服务端和客户端。服务端运行在有公网ip的服务器上;客户端运行在内网主机上,二者可以进行数据转发。我们连接到客户端指定的端口便可以实现与内网主机连接
3. 配置公网服务器
下载frp库
# 下载
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
# 解压
tar -zxvf ffrp_0.62.1_linux_amd64.tar.gz
打开配置文件
vim frps.toml
修改文件内容
# frps.toml
# frp监听的端口,默认是7000,可以改成其他的
bindPort = 7000
# 授权码,请改成更复杂的
token = 52010 # 这个token之后在客户端会用到
启动frps服务
./frps -c ./frps.toml
为了实现服务后台持续运行,可以将命令放在Tmux中,Tmux的使用请参考Tmux
云服务器上的防火墙上要放行bindPort
和客户端中的remotePort
两个端口
4. 配置内网客户端
下载frp库
# 下载
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
# 解压
tar -zxvf ffrp_0.62.1_linux_amd64.tar.gz
打开配置文件
vim frpc.toml
修改文件内容
# frpc.toml
serverAddr = "x.x.x.x" # 公网服务器 IP
serverPort = 7000 # 与服务端配置的 bind_port 一致
token = 52010 # 与frps.ini的token一致
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1" # 内网服务 IP,一般为 127.0.0.1
localPort = 22 # 内网服务的端口
remotePort = 6000 # 外部访问的端口,注意不要与服务端端口冲突
启动frpc服务
./frpc -c ./frpc.toml
为了实现服务后台持续运行,可以将命令放在Tmux中
5. 本地设置
建议使用密钥连接内网主机,具体教程请参考使用SSH
在本地的~/.ssh/config
中添加
Host 别名
HostName 公网IP地址
User 内网主机用户名
IdentityFile 内网主机私钥的地址
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 雯欂の修仙笔记!