【问题标题】:Does anyone know a SSH/ SFTP/ FTP wrapper around pfsockopen()?有人知道 pfsockopen() 周围的 SSH/SFTP/FTP 包装器吗?
【发布时间】:2010-08-11 22:45:24
【问题描述】:

有人知道pfsockopen(); 周围的 SSH/SFTP/FTP 包装类吗??我仍在寻求在 PHP 中保持持久连接。

【问题讨论】:

    标签: php sockets ssh


    【解决方案1】:

    快速阅读后,看起来打开一个套接字处理的层与您想要的不同。您想通过 SSH 或 SFTP(应用层)连接,使用通过 TTP/TLS/UDP(传输层)进行连接的方法。

    所以你真正想要的(我认为)是使用pfsockopen() 函数创建 SSL 或 TLS 连接,然后使用该连接通过 SSH/SFTP 协议传递数据。

    根据PHP网站:

    如果你在 OpenSSL 中编译过 支持,您可以为主机名添加前缀 使用 ssl:// 或 tls:// 使用 SSL 或 TLS 客户端连接 TCP/IP 连接到远程主机。

    所以我最好的猜测是您将主机名设置为以ssl:// 开头,然后使用 SSH 或 SFTP 端口作为端口(因此端口 22 或端口 989)。比如:

    $persistent_socket = pfsockopen("ssl://myhostsite", 22);
    

    $persistent_socket = pfsockopen("ssl://myhostsite", 989);
    

    【讨论】:

    • 谢谢。是的,我意识到这一点。我希望某个地方有人知道实现完整 SSH 协议的 PHP 类...
    • 所以您想使用持久套接字通过 SSH 发送,对吗? PHP 的 SSH 函数是否不允许设置套接字处理程序?
    • 我刚刚看了看,似乎在大约 2 年前就提出了 SSH2 持久连接的请求。多么拖沓。我很惊讶您不能只将 SSH2 指向 SSL 套接字处理程序。
    • 这似乎不是首发。将使用一个守护进程来维持持久连接。
    • 其实我已经思考你的问题一个星期了。我希望一个守护进程被证明比我们任何一个想出的解决方法都简单。
    【解决方案2】:

    @user260294:非常感谢http://phpseclib.sourceforge.net/。虽然与原始问题无关,但它为我节省了在类似项目中编写代码的时间。

    @Simon:您还没有看到任何人使用 pfsockopen() 专门用于 SSH / SFTP,因为它不适用于这些特定协议。这个想法是,如果一个连接已经存在,您可以使用 pfsockopen 重用它而无需重新发送任何标头,但这对于侦听端口 22 的守护程序是不允许的。您别无选择,只能重新建立连接并重新发送标头。这适用于处理 SSH1/2/SFTP 的任何事物。

    对于建立持久连接的守护程序 - 当它超时时,您必须重新连接...所以我认为这样做没有多大意义。

    【讨论】:

      【解决方案3】:

      这是一个围绕 fsockopen() 的 SSH / SFTP 包装类:

      http://phpseclib.sourceforge.net/

      这不是 pfsockopen() 但也许用 pfsockopen() 替换一个 fsockopen() 调用会解决问题?

      【讨论】:

        【解决方案4】:

        哇,http://phpseclib.sourceforge.net/ 的软件包非常适合 sftp 连接,无需安装或添加模块或任何东西。它只是工作。非常感谢

        【讨论】:

          【解决方案5】:

          我不知道围绕它构建的类实现,但有一个 ssh2 module 如果对你有帮助...

          【讨论】:

            猜你喜欢
            • 2011-08-12
            • 1970-01-01
            • 2010-09-11
            • 1970-01-01
            • 2020-07-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-31
            相关资源
            最近更新 更多