【问题标题】:Perl cgi for ssh用于 ssh 的 Perl cgi
【发布时间】:2011-11-22 09:04:36
【问题描述】:

我想问一下perl cgi如何做一个ssh

我不仅想要一个 ssh 连接,还想要保持这个连接。 简单来说,可以做一个web view ssh console吗?

请忽略安全问题 谢谢

【问题讨论】:

  • “请忽略安全问题”?我认为您正在寻找 S SH 以外的其他东西。
  • 我认为您正在寻找 CGI web shell,类似于 PPS 1.0
  • 是的,我会的,谢谢。但是,我已经尝试过 Net-SSH-Perl,我不确定如何检查连接是否仍然连接,是否可以在 HTML 中键入命令以提交到 SSH。简单来说,我可以使用 CGI 制作 Web 控制台吗?
  • 我的意思是因为我使用 HTTP 来访问 SSH。 HTTP 不够安全,我将从门户网站登录。反正我就是想知道能不能实现
  • 你可以,但是你必须写一个webinterface和一个ssh后端。尤其是保持 ssh 连接并不容易。对于前端,我会向您推荐一个基于 AJAX 的站点。你想做的事情远非微不足道;尤其是 perl。

标签: perl ssh cgi


【解决方案1】:

嗯....有趣的项目....

+ 对于前端:

完全同意 AJAX....此外,您可以改用 jquery (http://api.jquery.com/jQuery.ajax/)...这会让您的生活更轻松。

+ 对于后端:

  1. 一个最简单的想法...对在 beb iface "ssh host 'command'" 上运行的每个命令调用 ssh 命令...将需要一个简单的 ssh 包装器和无密码公钥/私钥也用于调用命令没有密码的远程机器(如果需要)...

  2. 您也可以使用 Net::SSH 代替 ssh 命令...这会增加一点复杂性...

  3. 更复杂的想法...您可以编写一个小型守护程序来保持和处理 ssh 连接...使用 FIFO,您可以从您的 CGI 脚本与守护程序进行交互,以便设置/删除连接、发送/通过 ssh 接收命令...

希望这会有所帮助,

/A

【讨论】:

  • 我担心的一件事是关于会话。当用户输入一些命令时如何保持会话
  • 如果我的观点正确,您可以从守护进程中为每个 ssh 会话派生子进程..
【解决方案2】:

我在使用 Net::SSH2 进行 SSH 连接方面取得了更大的成功,但您必须自己安装 libssh2。

对于网络服务器,最好的选择是一个简单的 Plack 应用程序,它为用户创建和维护 SSH 连接。当他们创建连接时,给它一个 ID(可能使用 Data::UUID)并将其用作 URL(将它们重定向到他们的 URL)。然后只需接受命令作为对该 URL 的 POST 数据请求(使用文本/纯文本,而不是表单数据)。为 URL 使用 UUID 将允许一个用户轻松拥有多个连接。 UUID 无法猜测,使得会话劫持变得困难。用户仍然需要有凭据才能建立 SSH 连接(您应该接受凭据并使用它们来创建 Net::SSH2 对象),因此安全风险应该很小。

【讨论】:

    猜你喜欢
    • 2011-02-23
    • 2016-04-13
    • 2014-01-29
    • 2012-08-05
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多