V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JConlee
V2EX  ›  程序员

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

  •  
  •   JConlee · 2014-09-24 19:57:54 +08:00 · 3324 次点击
    这是一个创建于 3498 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先说明一下情况:
    我有一个架设在某特定网络下的服务器(以下简称内网服务器),它可以访问外网,但在外网无法访问这台服务器(而且无法端口映射)。为了能在外网环境下控制这台服务器,我做了几种尝试:
    1.在内网服务器上,使用ssh -R指令,与某一外网VPS建立ssh tunnel之后,就可以通过连接外网VPS来控制内网服务器了。
    2.使用pagekite、ngrok之类的服务,也可以达成类似上个方法的效果。

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

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

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

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

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

    ip可以用动态域名来管理,本机对外做映射好了
    JConlee
        11
    JConlee  
    OP
       2014-09-24 20:37:55 +08:00
    @phuslu 恩,我看一下,thx
    JConlee
        12
    JConlee  
    OP
       2014-09-24 20:50:39 +08:00
    @pimin 十分感谢。
    我最开始的时候也是寻找各种内网穿透的方法,当时就两点要求:稳定和free。
    我一直以为teamviewer这种需要中转服务器的,肯定都价格不菲,所以我就忽略了,没想到还有免费的非商业版本。
    lshero
        13
    lshero  
       2014-09-25 09:24:33 +08:00
    @JConlee 都拨到一个VPN上做一个路由表不行嘛?
    JConlee
        14
    JConlee  
    OP
       2014-09-25 12:49:36 +08:00
    @lshero 应该可以吧,不过我从来没试过这种方法,长见识了。
    lshero
        15
    lshero  
       2014-09-25 14:21:00 +08:00
    @JConlee 不过如果是VPS的话 貌似openvz的做VPN好麻烦
    JConlee
        16
    JConlee  
    OP
       2014-09-25 14:47:04 +08:00
    @pimin teamviewer和向日葵我都试过了,在linux下都有些问题。
    tv是必须要有图形界面才可以,向日葵对64位的支持还不太好。
    xderam
        17
    xderam  
       2014-09-25 14:59:39 +08:00
    @JConlee 直接把指令发送到一个电子邮箱里..我是说这个安全性..ssl和认证没啥关系吧.
    JConlee
        18
    JConlee  
    OP
       2014-09-25 20:20:22 +08:00
    @xderam 可以验证发信人身份,也可以对信息本身按某种方式加密,这样别人也无法伪装。而且邮件都是阅后即焚。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5405 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:34 · PVG 16:34 · LAX 01:34 · JFK 04:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.