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).ssh2://
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ssh2://
Референца за `wrappers.ssh2.php` со подобрена типографија и навигација.
ssh2://
ssh2:// — Secure Shell 2
= NULL
ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// Secure Shell 2
Забелешка: (PECL)
Овој обвивач не е овозможен по дифолт ssh2.*:// За да ги користите обвивачите обвивачите, » SSH2 (достапно од PHP 7.2.0) екстензијата достапна од
мора да биде инсталирана.
Употреба
- ssh2.shell://user:[email protected]:22/xterm
- ssh2.exec://user:[email protected]:22/usr/local/bin/somecmd
- ssh2.tunnel://user:[email protected]:22/192.168.0.1:14
- ssh2.sftp://user:[email protected]:22/path/to/filename
Примери
Пример #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() е имплицитно поради напуштање на опсегот (како во функција).
Белешки од корисници 4 белешки
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.Please beware of a PHP bug, noted by thomas at gielfeldt dot dk, that you must intval() the connection variable before putting it in the connection string :
<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);
// See: https://bugs.php.net/bug.php?id=73597
$stream = fopen("ssh2.sftp://" . intval($sftp) . "/path/to/file", 'r');
?><?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";
}
?>