想在树莓派上开一个Minecraft服务器来试试性能(zuosi),但是,有一个问题。
因为,树莓派是放在校园网里面的,没有公网IP。所以外网的人就访问不了我的服务器。
刚好,我有一台Aliyun的服务器,有公网IP。那么,我们就可以利用SSH端口转发来实现内网穿透!
首先,我们来看几条命令:
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
参数解释:
-R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-f Fork into background after authentication.
后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-C Enable compression.
压缩数据传输。
-N Do not execute a shell or command.
不执行脚本或命令,通常与-f连用。
好吧,如果懒得看的话,那么下面简单解释下:
将树莓派的25565端口转发到公网服务器B的25566端口,再在公网服务器内部将端口25565转发到端口25566,这也就意味着,只要客户端访问服务器B的25565端口,那么流量就会被转发到B:25566端口,进而转发到A:25565
有木有很绕?其实就两行命令的事情:
首先,在树莓派上输入:
ssh -NfR *:25566:127.0.0.1:25565 服务器B的用户名@服务器B的IP -p 22
然后输入密码,如果成功就会在后台运行ssh
然后,再在服务器B上运行:
ssh -CNfg -L 25565:localhost:25566 服务器B的用户名@localhost
一样,输入密码,搞定!
这样就可以通过访问服务器B的IP:25565来连接我们的MC服务器了!