0%

使用SSH Tunnel访问位于学校内网的教务系统

  学校的教务系统位于学校的内网中,想要访问必须在机房里登录或者连上校园Wifi,但是寝室中的网络,网关设备通过VPN拨入了学校内网,因此在寝室中可以正常访问教务系统,在路由器上设置SSH Tunnel方便在外网访问教务系统。
  2019年9月12日更新:这个方法不优雅,其实直接在路由器上设置端口转发即可实现,将源区域及目标区域均设置为wan即可。

设置SSH Tunnel

  OpenWrt系统并没有使用OpenSSH实现SSH服务,而是使用dropbear替代。OpenWrt中SSH命令同样是由dropbear实现,如果要使用密钥的方式登录SSH,必须使用dropbear私有的格式生成密钥对。执行命令后私钥自动保存到文件中,而公钥则打印在控制台当中。

1
dropbearkey -t rsa -s 2048 /root/.ssh/id_dropbear

  在LuCI中保存SSH公钥,设置好SSH服务后,启用SSH隧道。

1
ssh -f -N -g -y -L 8015:10.1.1.15:80 root@192.168.9.254/8022 -i
2
# -f    在后台启动SSH
3
# -N    不打开远端Shell
4
# -g    允许端口转发
5
# -y    不经过询问
6
# -L    监听端口及转发端口
7
# -i    私钥文件,不跟路径则默认为~/.ssh/id_dropbear

  启动SSH隧道后,发现已经监听了8015端口。

  最后打开防火墙的8015端口

自动启动SSH Tunnel

1
#!/bin/sh
2
[ "$INTERFACE" = wan1 ] || exit 0
3
if [ "$ACTION" = ifup ];then
4
    /etc/init.d/dropbear restart /usr/bin/ssh -f -N -g -y -L 8015:10.1.1.15:80 root@192.168.9.254/8022 -i
5
else
6
    /usr/bin/pgrep ssh | /usr/bin/xargs kill -s 9
7
fi

  保存到/etc/hotplug.d/iface/99-user下,即可实现WAN联机时自动启动SSH Tunnel。