【问题标题】:Run SSh from php or bach and Handler keyboard-interactive authentication从 php 或 bach 和 Handler 键盘交互式身份验证运行 SSh
【发布时间】:2017-12-10 23:15:55
【问题描述】:

我正在尝试在输入用户名后连接到具有键盘交互(auth)的ssh主机,它会生成密钥并显示它,然后它应该加密并再次发送成功登录。

我找到了用python编写的想法,但我无法在windows中运行它。

http://seclists.org/fulldisclosure/2016/Jan/26

我的 php 源 ssh.php:

$ssh = new phpseclib\Net\SSH2('169.254.201.230');
$ssh->login('Fortimanager_Access');
print $ssh->read();

据说:

PHP 注意:在 C:\Apache24\htdocs\cli\vendor\phpseclib\phpseclib\phpseclib\Net\SSH2.php 第 2804 行的 login() 之前不允许操作

我尝试使用 putty 命令行 (plink.exe) 的另一种方式

system("C:\plink.exe" Fortimanager_Access@127.0.0.1 >z && type z && type z >> z.txt");

但它不保存日志希望包含从键盘交互生成的字符串。

腻子示例:

登录为:Fortimanager_Access

使用键盘交互式身份验证。 -840056459

访问被拒绝

使用键盘交互式身份验证。 -1378285763

AK1AAAAAAAAAAAAAAAAmWT0TKGMI23Iq4Q9P42z0PwpYBQ=

如果我可以在 plink 的 midlle 中从 php 运行 bat,那就太好了

过去几天我一直在尝试解决这个问题,这是我能够得到的最接近的工作。

【问题讨论】:

    标签: php python batch-file ssh phpseclib


    【解决方案1】:

    看起来这是在https://github.com/phpseclib/phpseclib/issues/1146 交叉发布的。引用答案:

    phpseclib 目前无法做到这一点。目前 phpseclib(如 http://phpseclib.sourceforge.net/ssh/auth.html#keyboard 中所述)支持两种处理键盘交互身份验证的方法。

    1. 基于订单。例如。如果您有两个参数(在用户名之后),则每个参数都会按照它们在函数调用中出现的顺序传递给键盘交互提示。

    2. 基于上下文。例如。你告诉 phpseclib 在遇到已知提示时应该发送什么。

    您正在谈论动态提示并根据提示调整响应。使 phpseclib 做到这一点需要大量的工作。这是一个好主意,当我开始修改 SSH 时,我会将其添加到我的 3.0 更改列表中,但那是很遥远的事情了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-18
      相关资源
      最近更新 更多