有谁知道围绕pfsockopen()的SSH / SFTP / FTP包装?

时间:2010-02-11 00:52:51

标签: php sockets ssh

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

5 个答案:

答案 0 :(得分:2)

快速阅读后,看起来打开一个套接字会处理一个不同的图层然后你想要的。您希望通过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);

答案 1 :(得分:2)

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

@Simon:你没有看到任何人使用pfsockopen()专门用于SSH / SFTP,因为它不适用于这些特定的协议。我们的想法是,如果连接已经存在,您可以将其与pfsockopen一起重用,而无需重新发送任何标头,但是在端口22上侦听的守护进程不允许这样做。除了重新建立连接并重新发送标头之外别无选择。这适用于处理SSH1 / 2 / SFTP的任何事情。

在守护进程建立持久连接的情况下 - 当它超时时你必须重新连接...所以我没有看到这样做的重点。

答案 2 :(得分:1)

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

http://phpseclib.sourceforge.net/

这不是pfsockopen()但是用pfsockopen()替换一个fsockopen()调用会有什么作用?

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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