通过http(s)运行任意的,encryption的shell命令?

我希望能够编码维护脚本远程运行按需。

编辑:好用例:webhooks。 例如,当有人将代码推送到github时,触发CI +分段部署。

如果我要使用安全密码(如aes128 +密码短语)来encryptionshell命令:

例如'mysecretwords cd〜&& mkdir ./something' – >'m4tpWsuiOJT0naKkyWDdNQUKMQ7',

然后允许通过一个url执行该命令:

例如' https://myserver.com/script/m4tpWsuiOJT0naKkyWDdNQUKMQ7 '

url本身包含在服务器上运行的编码命令,只能通过目标服务器解码,并使用密码短语。

我很肯定这是一个非常糟糕的主意:但是出于兴趣,这怎么可能呢?

问这个问题的行为可能是证据不足以安全地做到这一点。

首先让我们解决你的更重要的核心问题:

我希望能够编码维护脚本远程运行按需。

这听起来像( 喇叭声 )自动化工具的工作!
傀儡马上会想起来,但还有很多其他的。
你也可以在家里build立一个使用无密码SSH密钥的系统,login到远程系统并在其上运行命令,这是从傀儡之前的日子里做这种事情的一种悠久的方式。


现在我们来谈谈基于HTTP的想法 – 你马上就说出来了:

我很肯定这是一个非常糟糕的主意:但是出于兴趣,这怎么可能呢?

你是对的:这一个可怕的想法。 不要在生产环境中执行此操作,特别是在大坏公共互联网上可访问URL的情况下。

请允许我以可怕的细节列举恐怖事件:

  • 您正在使用预共享密钥( mysecretwords )。 任何人都可以肩负(或猜测)并运行命令。
  • 你通过默默无闻的方式使用安全(“没有人会发现, https://myserver.com/script是让你运行的东西的URL!”)。
  • 您正在以Web服务器用户的身份运行命令。
    这可能不是你想要的,这意味着Web服务器用户将需要某种提升特权 – 以root身份运行,能够sudo等。
  • 您正在使用无状态协议(http)来运行可能需要terminal,login环境等的命令。 – 这可以完成,但除了最琐碎的任务之外,任何其他操作都意味着您将不得不破解后端保持状态。
  • 你正在做什么ssh应该做的。
    不要试图重新发明轮子。 我保证你的椭圆形轮子不如圆形( ssh )。
    如果您不能使用传统的SSH,则有许多基于Web的SSH客户端 ,甚至更多的Java客户端。 使用其中之一。 你甚至可以把它们放在HTTP授权之后(用户名/密码,证书等)

至于如何保证这一点 – 你已经做了几乎所有的事情:预共享密钥作为authentication(组合的用户名和密码),并提供了一层encryption,虽然没有必要。
https://在传输过程中encryption您的数据,并且消除了嗅探这个神奇URL的机会(尽pipe不是他们自己推断它的机会)。
只要您的服务器只允许通过https://连接访问魔术URL,并且您的Web服务器上的SSLconfiguration是安全的,则无法做得更好。

话虽如此,但您为提高安全性所做的任何努力都无法消除您正在尝试做的基本缺陷 – 您可能会永远放弃,永不妥协,但为什么要添加一个攻击面当已经有工具可以做你想做的事时,你不需要? (我可能会补充说,这些工具是由专家编写的,经过其他专家的彻底审查/testing,并且被广泛使用,所以如果安全问题浮出水面,它就会被匆匆修复)