OpenWrt上使用AutoSSH建立反向代理
丈母娘想让我解决她们家Wifi信号弱的问题,我决定把家里原来唯一的无线路由器变成纯AP,弱电箱里放一个星际宝盒,另外在客厅放一台K2保证全家的Wifi覆盖。
本来路由器这种东西设置好了就不会再动了,可是我还需要解决他们家网络电视的问题,网络电视这种东西,直播源很容易失效,感觉以后会涉及到远程维护了。
我之前写过Ubuntu下用Autossh建立反向连接的博文,现在想照搬到OpenWrt上。但是OpenWrt上是用Dropbear作为SSH工具,与OpenSSH有些许不同,记录一下过程。
前期准备
- 公网服务器A 开放端口5680(转发ssh连接),开放端口5681(监听连接状态),开放端口22,用OpenSSH做SSH服务器
- 内网机器B OpenWrt with Dropbear
修改公网服务器A的SSH配置文件/etc/ssh/sshd_config
1 | GatewayPorts yes |
这样可以把监听的端口绑定到任意IP 0.0.0.0上,否则只有本机127.0.0.1可以访问。
添加ssh-rsa算法兼容老板版本dropbear
记得重启SSH服务器
1 | sudo service restart sshd |
用内网B机器保存公网服务器A的密钥,以便免密连接
这里就跟OpenSSH不一样了,因为Dropbear没有ssh-id-copy这个命令,而Dropbear的private key又不是以明文方式存储的。
1 | #You can get the key using |
然后将key从authorized_keys复制添加到到公网服务器的~/.ssh/authorized_keys中
在内网B机器上尝试建立反向代理
1 | #注意Dropbear在建立SSH连接时不会自己带着私钥,需要指定 |
正常情况下,不用输入密码,通道即建立成功。
- -N:只建立连接,不打开shell
- -R:指定端口映射
AutoSSH 自动重连
使用SSH的方式不够稳定,使用AutoSSH可以自动在连接断开时自动重连,再把AutoSSH加入系统服务自动启动,则可以做到稳定的连接。
安装AutoSSH
1 | opkg install autossh |
将AutoSSH添加到开机自启
注意在OpenWrt里,官方的autossh早就给你准备好了 /etc/init.d/autossh
文件,你只需要在/etc/config/autossh
中修改参数即可,下面贴出我的配置
1 | config autossh |
修复Dropbear的一个小bug
必须要指定HOME目录,详见Github
修改/etc/init.d/autossh
,添加HOME=/root
,全文见下
1 |
|
然后开机启动Autossh/etc/init.d/autossh enable