V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
s82kd92l
V2EX  ›  Linux

求轻量级服务包装方案

  •  
  •   s82kd92l · 2021-11-25 22:01:02 +08:00 via Android · 2791 次点击
    这是一个创建于 1101 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问 linux 上有没有一种轻量级的,单独远程提供一个 systemd 服务控制或者 dbus 接口的方案呢? 一般这种事情可以用万能的 ssh 来做,但 ssh 太核武器了,一旦密钥丢了就很麻烦了

    问这个问题初衷是想在路由器上控制主机的一些行为,比如一旦外部 ip 地址变化,及时重启主机上的一个 systemd 服务,但有不想用 ssh 访问主机 root 账户

    请大家各抒己见哈
    11 条回复    2021-11-27 10:32:51 +08:00
    calmzhu
        1
    calmzhu  
       2021-11-25 22:16:56 +08:00
    身份认证是绕不过去的

    要轻量还得复用 ssh. 新建个普通用户,然后住用户用脚本轮询一下普通用户的某个标志文件就可以了。

    稳一点标志文件只做开关。
    野一点标志文件当脚本直接跑
    Argon
        2
    Argon  
       2021-11-25 22:51:48 +08:00
    ```python
    import os
    from flask import Flask

    app = Flask(__name__)

    @app.route('/restart/foo')
    def restart_foo():
    exit_code = os.system('systemctl restart foo.service')
    return 'Exit: {}'.format(exit_code)

    if __name__ == '__main__':
    app.run()
    ```
    (笑)觉得 SSH 重的你会不会觉得 Python 轻呢?
    Buges
        3
    Buges  
       2021-11-25 22:56:54 +08:00 via Android
    shell 脚本写个循环,nc -l 接受指令
    同样发送端也用 nc 。
    就一个裸 tcp 连接,够“轻量”了吧?
    iceheart
        4
    iceheart  
       2021-11-25 23:10:04 +08:00 via Android
    路由器启个 web 服务返回状态,
    主机上 crontab 定时跑脚本读状态,根据结果执行命令
    eason1874
        5
    eason1874  
       2021-11-25 23:20:40 +08:00
    封装成 HTTP API 比较好用,用什么脚本开发都能轻松实现

    客户端 -> HTTP API 提交任务请求 -> Web Server 写任务到文件 -> Cron shell 执行任务
    adoal
        6
    adoal  
       2021-11-25 23:36:50 +08:00 via iPhone
    用普通用户,给他 1⃣️配置 sudo 规则,只允许 nopasswd sudo 后执行重启某些服务的命令 2⃣️配置 authorized_keys 项,只允许执行指定的脚本,把 sudo 重启和前导后续操作写在脚本里
    s82kd92l
        7
    s82kd92l  
    OP
       2021-11-25 23:42:13 +08:00 via Android
    @Argon
    @eason1874 裸 http 不好做认证,感觉 tls/ssh 或者 curve25519 级别的认证还是要有的
    s82kd92l
        8
    s82kd92l  
    OP
       2021-11-25 23:45:14 +08:00 via Android
    像 wireguard 这种分布式的加密 /认证一体化的方案就很优雅,如果能作为 lib 嵌入其他程序就好了
    liuxu
        9
    liuxu  
       2021-11-26 12:33:45 +08:00
    @s82kd92l http basic auth 不是挺好的
    s82kd92l
        10
    s82kd92l  
    OP
       2021-11-27 10:32:42 +08:00 via Android
    在研究 xmpp+omemo , 加密和认证应该是过关的,也不用像 http 一样独占一个端口。缺点可能是库依赖比较多,路由器上有点难搞。

    问下大家,mqtt 载体上上有类似 omemo 上的加密认证协议
    s82kd92l
        11
    s82kd92l  
    OP
       2021-11-27 10:32:51 +08:00 via Android
    吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2574 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:28 · PVG 13:28 · LAX 21:28 · JFK 00:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.