ssh2://

Оновлено: 11.05.2023

ssh2:// - Безпечна оболонка 2

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// (PECL)

Зауваження: За замовчуванням цю обгортку не ввімкнено Для використання обгорток ssh2.*:// вам слід встановити розширення " SSH2, доступне з " PECL.

На додаток до прийняття традиційних даних для входу в URI, обгортки ssh2 також повторно використовують відкриті з'єднання, передаючи ресурс з'єднання в хост-частині URL-адреси.

ssh2.shell://user:pass@example.com:22/xterm ssh2.exec://user:pass@example.com:22/usr/local/bin/somecmd ssh2.tunnel://user:pass@example.com:22/192.168.0.1:14 ssh2.sftp://user:pass@example.com:22/path/to/filename

Wrapper Summary Attribute ssh2.shell ssh2.exec ssh2.tunnel ssh2.sftp ssh2.scp Restricted by allow_url_fopen Yes Yes Yes Yes Yes Allows Reading Yes Yes Yes Yes Yes Allows Writing Yes Yes Yes Yes No Allows Appending No No No Yes (When supported by server) No Allows Simultaneous Reading and Writing Yes Yes Yes Yes No Supports stat() No No No Yes No Supports unlink() No No No Yes No Supports rename() No No No Yes No Supports mkdir() No No No Yes No Supports rmdir() No No No Yes No
Context options Name Usage Default session Preconnected ssh2 resource to be reused   sftp Preallocated sftp resource to be reused   methods Key exchange, hostkey, cipher, compression, and MAC methods to use   callbacks     username Username to connect as   password Password to use with password authentication   pubkey_file Name of public key file to use for authentication   privkey_file Name of private key file to use for authentication   env Associate array of environment variables to set   term Terminal emulation type to request when allocating a pty   term_width Width of terminal requested when allocating a pty   term_height Height of terminal requested when allocating a pty   term_units Units to use with term_width and term_height SSH2_TERM_UNIT_CHARS

Приклад #1 Відкриття потоку з активного з'єднання

<?php
$session = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
                                            '/home/username/.ssh/id_rsa', 'secret');
$stream = fopen("ssh2.tunnel://$session/remote.example.com:1234", 'r');
?>

Приклад #2 Ця змінна $session повинна бути доступною!

Для того, щоб використовувати обгортки ssh2.*://$session, ви повинні зберігати змінну ресурсу $session. Код, наведений нижче, не дасть бажаного ефекту:

<?php
$session = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
                                            '/home/username/.ssh/id_rsa', 'secret');
$connection_string = "ssh2.sftp://$session/";
unset($session);
$stream = fopen($connection_string . "path/to/file", 'r');
?>

unset() закриває сеанс, оскільки $connection_string не містить посилання на змінну $session, а лише приведення до рядка, отриманого з неї. Це також трапляється, коли unset() є неявним через вихід за межі області видимості (наприклад, у функції).