使用电子邮件发送服务器指令的可行性

2014-09-24 19:57:54 +08:00
 JConlee
先说明一下情况:
我有一个架设在某特定网络下的服务器(以下简称内网服务器),它可以访问外网,但在外网无法访问这台服务器(而且无法端口映射)。为了能在外网环境下控制这台服务器,我做了几种尝试:
1.在内网服务器上,使用ssh -R指令,与某一外网VPS建立ssh tunnel之后,就可以通过连接外网VPS来控制内网服务器了。
2.使用pagekite、ngrok之类的服务,也可以达成类似上个方法的效果。

但是上述两种方法都不是太稳定,经常丢失连接。
所以我就想,如果只是偶尔发送一两个指令的话,不如直接把指令发送到一个电子邮箱里,然后内网服务器读取这个指令并执行。使用IMAP协议的idle特性的话,可以实现类似推送的效果。因为有现成的IMAP库,用python来做也不会花费太长时间。

我想了解一下有没有更好的解决方案,或者有没有造好的车轮呢。
3423 次点击
所在节点    程序员
18 条回复
xderam
2014-09-24 20:11:36 +08:00
....安全..smtp基本相当于是不验证的..
JConlee
2014-09-24 20:21:05 +08:00
@xderam imap是有ssl的
ipconfiger
2014-09-24 20:25:26 +08:00
你可以用github的http hook
phuslu
2014-09-24 20:26:32 +08:00
一般做法是用 irc. 你的需求直接到 freenode 上建立一个私聊频道就可以了。
ipconfiger
2014-09-24 20:26:44 +08:00
貌似不对,http hook不行,不过github是可以的,就是不停的检测一个reponsitory下的某文件,有变更就pull下来执行里面的内容就ok了
ipconfiger
2014-09-24 20:27:19 +08:00
原来我就是用这个方法控制家里的机器下BT的
phuslu
2014-09-24 20:29:17 +08:00
python 的话,可以参考这个 https://github.com/sbp/phenny
JConlee
2014-09-24 20:30:54 +08:00
@phuslu
@ipconfiger
如果不断轮询的话还是有些延迟和消耗的吧,我想找个能推送的解决方法。
phuslu
2014-09-24 20:37:08 +08:00
@JConlee ircbot 一般都是 pubsub 模式,而且 irc 是公认的低延迟的控制办法,很多僵尸网络都用它。
pimin
2014-09-24 20:37:43 +08:00
归根结底就是个内网穿透问题
用邮件是舍近求远

可以看下teamviewer和向日葵,没在linux上折腾过,应该没有问题

就算不行也可以用反向连接的方法

1.本地监听10086端口
2.服务器间隔xx秒向指定ip:10086发起连接弹个shell

ip可以用动态域名来管理,本机对外做映射好了
JConlee
2014-09-24 20:37:55 +08:00
@phuslu 恩,我看一下,thx
JConlee
2014-09-24 20:50:39 +08:00
@pimin 十分感谢。
我最开始的时候也是寻找各种内网穿透的方法,当时就两点要求:稳定和free。
我一直以为teamviewer这种需要中转服务器的,肯定都价格不菲,所以我就忽略了,没想到还有免费的非商业版本。
lshero
2014-09-25 09:24:33 +08:00
@JConlee 都拨到一个VPN上做一个路由表不行嘛?
JConlee
2014-09-25 12:49:36 +08:00
@lshero 应该可以吧,不过我从来没试过这种方法,长见识了。
lshero
2014-09-25 14:21:00 +08:00
@JConlee 不过如果是VPS的话 貌似openvz的做VPN好麻烦
JConlee
2014-09-25 14:47:04 +08:00
@pimin teamviewer和向日葵我都试过了,在linux下都有些问题。
tv是必须要有图形界面才可以,向日葵对64位的支持还不太好。
xderam
2014-09-25 14:59:39 +08:00
@JConlee 直接把指令发送到一个电子邮箱里..我是说这个安全性..ssl和认证没啥关系吧.
JConlee
2014-09-25 20:20:22 +08:00
@xderam 可以验证发信人身份,也可以对信息本身按某种方式加密,这样别人也无法伪装。而且邮件都是阅后即焚。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/135472

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX