Кто-нибудь знает обертку SSH / SFTP / FTP вокруг pfsockopen ()? - PullRequest
1 голос
/ 11 февраля 2010

Кто-нибудь знает класс оболочки SSH / SFTP / FTP около pfsockopen(); ?? Я все еще пытаюсь сохранить постоянные соединения в PHP.

Ответы [ 5 ]

2 голосов
/ 28 мая 2010

@ user260294: Большое спасибо за http://phpseclib.sourceforge.net/. Хотя это и не было связано с первоначальным вопросом, оно сэкономило мне часы кодирования аналогичного проекта.

@ Саймон: Вы не видели, чтобы кто-то специально использовал pfsockopen () с SSH / SFTP из-за того, что он не работает для этих конкретных протоколов. Идея состоит в том, что если соединение уже существует, вы можете повторно использовать его с pfsockopen без повторной отправки заголовков, но это не разрешено для демонов, прослушивающих порт 22. У вас нет другого выбора, кроме как восстановить соединение и повторно отправить заголовки. Это относится ко всему, что касается SSH1 / 2 / SFTP.

В случае с демоном, который устанавливает постоянное соединение - когда время ожидания истекает, вы должны заново соединяться ... Итак, я не вижу особого смысла в этом.

2 голосов
/ 11 февраля 2010

После быстрого чтения, похоже, что открытие сокета имеет дело с другим слоем, чем вы хотите. Вы хотите соединиться через SSH или SFTP, который является прикладным уровнем, используя метод, который устанавливает соединения через TTP / TLS / UDP, который является транспортным уровнем.

Итак, на самом деле вы хотите (я думаю) создать соединение SSL или TLS с помощью функции pfsockopen(), а затем использовать это соединение для передачи данных по протоколу 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 голос
/ 11 августа 2010

wow пакет на http://phpseclib.sourceforge.net/ отлично работает для подключения sftp и не требует установки или добавления модулей или чего-либо еще. Это просто работает. Большое спасибо

1 голос
/ 24 марта 2010

Вот класс оболочки SSH / SFTP для fsockopen ():

http://phpseclib.sourceforge.net/

Это не pfsockopen (), но, возможно, замена одного вызова fsockopen () на pfsockopen () поможет?

0 голосов
/ 11 февраля 2010

Я не знаю о реализации класса, построенной вокруг этого, но есть модуль ssh2 , если это поможет вам ...

...