Trade Off

supercalifragilisticexpialidocious

Manage-rasp-pi-in-internal-network

今天早晨去公司后一开邮箱发现好多树莓派发来的警告信,如果是一封信可能是误报,但这么多,难道是真的有人闯入?不过看了大部分的图片都是空空的房间,但仍然有新的邮件过来,看来是红外探测器出问题了。

想了半天以为是昨天加的DHT11在读取数据的时候是不是改变了GPIO的布局,导致探测器的数据口得到数据,激活了它?后来证明不是。猜测啊:探测器放到了无线网卡下方,无线网卡有个工作指示灯一直闪烁,会不会触发了探测器,因为我换了个地方后探测器就正常工作了。

在没有远程管理的前提下,解决的方法是去七牛把bucket先删掉,这样就不能再上传图片了,然后去sendgrid修改密码,这样就不能发送邮件了。其实我期待能引发一个异常,这样程序就退出了,但很可惜,七牛的lib似乎做了些处理,删掉bucket或者修改API KEY这样的方法也就是给个提示出来,他们处理了异常,不过好在sendgrid的lib没有处理异常,密码错误后引发的异常终止了程序!GREAT!我还担心了一天摄像头不断拍照会不会坏掉。

上面都是背景吧,主题是一个远程管理的重要性,特别是出现这种突发情况而你又不在边上。

受限于当地的网络环境,树莓派在一个很深的网络中——有家庭的路由器,再往上是小区的路由器,也许再往上就是公网IP了,和在原来的家不同,直接能拿到公网IP,这样基本可以让树莓派暴露在公网上,管理起来当然方便了。穿透这么多层网络,感觉好麻烦,虽然毕业论文是NAT穿透的应用。。。

简单的做法就是利用第三方,我有一个VPS,当然在海外,除了速度上不如国内快之外,别的没啥了。

于是在树莓派上建立一个反向SSH:ssh -p VPS_PORT -fNR 2222:127.0.0.1:22 USER@VPS_HOST,其中VPS_PORT如果你没修改默认的22的话,可以不写-p VPS_PORT,其他的,比如fN,你可以先不写,测试成功后再写上,只做端口转发而不执行命令。后面的R表示反向连接:就是127.0.0.1的22端口在后面远程主机中映射到2222端口。这样,登陆了远程主机的人,访问2222端口就可以访问到树莓派的22端口了。

再临时生成几个rsa key加到authorized_keys中就可以不输密码登陆了,虽然速度稍慢一点,但至少是可用的!

测试通过后使用autossh建立连接,这样即便是中断也会重连上:)

Comments