ssh2://

ssh2://Secure Shell 2

Описание

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// PHP 4.3.0 и более поздние (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

Опции

Основная информация
Атрибут ssh2.shell ssh2.exec ssh2.tunnel ssh2.sftp ssh2.scp
Ограничение по allow_url_fopen Да Да Да Да Да
Чтение Да Да Да Да Да
Запись Да Да Да Да Нет
Добавление Нет Нет Нет Да (когда поддерживается сервером) Нет
Одновременная чтение и запись Да Да Да Да Нет
Поддержка stat() Нет Нет Нет Да Нет
Поддержка unlink() Нет Нет Нет Да Нет
Поддержка rename() Нет Нет Нет Да Нет
Поддержка mkdir() Нет Нет Нет Да Нет
Поддержка rmdir() Нет Нет Нет Да Нет

Опции контекста
Имя Использование По умолчанию
session Предварительно соединенный ресурс ssh2 для повторного использования  
sftp Предварительно выделенный ресурс sftp для повторного использования  
methods Обмен ключами, ключ хоста, шифр, компрессия, и MAC методы для использования  
callbacks    
username Имя пользователя для соединения  
password Пароль для аутентификации  
pubkey_file Имя файла, в котором находится публичный ключ для аутентификации  
privkey_file Имя файла, в котором находится приватный ключ для аутентификации  
env Ассоциативный массив с переменными окружения, которые необходимо установить  
term Тип эмуляции терминала для запроса, когда выделяется pty  
term_width Ширина терминала, запрашивается когда выделяется pty  
term_height Высота терминала, запрашивается когда выделяется pty  
term_units Единицы, в которых измеряются term_width и 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() при выходе из области видимости (например, из функции).

add a note add a note

User Contributed Notes 3 notes

up
5
bluej100 at gmail dot com
4 years ago
Be aware that opendir is currently broken on sftp root directories, but you can work around it by appending a dot. See https://bugs.php.net/bug.php?id=64169 and http://stackoverflow.com/a/16238476/69173.
up
3
exptom
4 years ago
The "password" context option can also be used to provide the passphrase for the keyfile supplied by "privkey_file" and "pubkey_file".

Note this bug: https://bugs.php.net/bug.php?id=58573
Encrypted keys may not work unless you build libssh2 against openssl. (It only worked for me on Debian Wheezy once I recompiled the library).
up
-1
thomas at gielfeldt dot dk
6 months ago
<?php
// Connect with public key.
$session = ssh2_connect('example.com', 22);
$result = ssh2_auth_pubkey_file($session, 'remote-username', '/home/local-username/.ssh/id_rsa.pub',
                                                            
'/home/local-username/.ssh/id_rsa',
                                                            
'secret');
// Setup sftp stream wrapper
$sftp = ssh2_sftp($session);
// See: https://bugs.php.net/bug.php?id=73597
$connection_string = 'ssh2.sftp://' . intval($sftp);

// List files in remote homedir.
$i = new \RecursiveDirectoryIterator("$connection_string/home/remote-username");
$r = new \RecursiveIteratorIterator($i);
foreach (
$r as $f) {
    print
$f->getPathname() . "\n";
}
?>
To Top