【问题标题】:Establishing an SSH connection in a CodeIgniter controller在 CodeIgniter 控制器中建立 SSH 连接
【发布时间】:2013-03-06 12:09:01
【问题描述】:

最近我遇到了这个库,它允许我通过ssh 连接到远程机器。 (本例是假的123.45.67.890。图书馆是 shukydvir

我按照overview 标签中给出的说明进行操作,但是如下所示:

public function deploy_test()
{
    $params = array( 
                'hostname' => "123.45.67.890",
                'port' => 23,
                'username' => "username",
                'password' => "password"
                );

    if(!($con = $this->ssh->connect($params))) {
        echo json_encode("fail: unable to establish connection\n");
    }
    else {
        echo json_encode("helloworld");
    }
}

当我回到网页时:

fail: unable to establish connection

因此,厌倦了,我安装了ssh2 库,并重新启动了我的服务器:

public function deploy_test() {
    $connection = ssh2_connect("123.45.67.890", 23);

    if(!$connection) {
       echo json_encode('Connection failed');
    }

    ssh2_auth_password($connection, "username", "password");
    $stream = ssh2_exec($connection, "ls -l");
    stream_get_blocking($stream, true);
    $output = "";
    while($line = fgets($stream)) {
        $output .= $line;
    }
    echo json_encode($line);
}

结果并不令人鼓舞:

<p>Severity: Warning</p>
<p>Message:  ssh2_connect(): Unable to connect to 123.45.67.890 on port 23</p>
<p>Filename: controllers/automation.php</p>
<p>Line Number: 70</p>

但是,当我从 test.php 文件中执行相同的脚本时,我得到:

02/13/2013  10:41 PM              .
02/13/2013  10:41 PM              ..
02/13/2013  10:41 PM               952 FreeSSHd.lnk
               1 File(s)            952 bytes
               2 Dir(s)  55,343,263,744 bytes free

另一台服务器已安装freSSHD,它已准备好进行连接。我已经尽我所能。有人可以帮我吗?

【问题讨论】:

  • 所以你是说它在你的test.php 文件中工作,但当你从 CodeIgniter 控制器运行相同的代码时却不行?
  • @MattB。这正是我要说的……你能相信吗?
  • 您能否创建一个仅包含deploy_test() 方法的新控制器,如果您使用的是自定义控制器基类,是否可以改为从CI_Controller 继承?然后在 gist.github.com 或 pastebin 上发布测试控制器的完整代码。也许它会帮助我们隔离问题。
  • 实际上,这基本上就是您在此处发布的内容,所以我自己创建了它,只是为了清楚起见:gist.github.com/mbrowne/5101004。当你从这个测试控制器运行它时,它不起作用?
  • @MattB。我现在就去做,并在你创建的gist 上发布答案。

标签: php codeigniter ssh


【解决方案1】:

CodeIgniter-SSH2 库正在使用 php 的原生函数 ssh2_connect(),它是基于 sftp 的安全 shell 登录,基本上连接到端口 22。尝试更改端口:

$connection = ssh2_connect("123.45.67.890", 22);

【讨论】:

  • 是的,但仍然取决于域/ip 设置为处理 ssh 连接的端口。
  • @PinoyPal 我的freeSSHD 设置为通过端口23 接收连接。但是,最让我烦恼的是为什么当我执行test.php 时它可以工作...
猜你喜欢
  • 2021-03-13
  • 1970-01-01
  • 2014-07-25
  • 2017-06-24
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
相关资源
最近更新 更多