update page now
Laravel Live Japan

ssh2://

ssh2://Secure Shell 2

Beschreibung

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

Hinweis: Dieser Wrapper ist standardmäßig nicht aktiviert
Um den Wrapper ssh2.*:// verwenden zu können, muss die » SSH2-Erweiterung von » PECL installiert werden

Neben den herkömmlichen URI-Anmeldedaten akzeptieren die ssh2-Wrapper auch eine im Host-Teil der URL übergebene Verbindungsressource, mit der offene Verbindungen wiederverwendet werden können.

Verwendung

Optionen

Zusammenfassung des Wrappers
Eigenschaft ssh2.shell ssh2.exec ssh2.tunnel ssh2.sftp ssh2.scp
Eingeschränkt durch allow_url_fopen Ja
Erlaubt Lesen Ja
Erlaubt Schreiben Ja Nein
Erlaubt Anfügen Nein Ja (falls vom Server unterstützt) Nein
Erlaubt gleichzeitiges Lesen und Schreiben Ja Nein
Unterstützt stat() Nein Ja Nein
Unterstützt unlink() Nein Ja Nein
Unterstützt rename() Nein Ja Nein
Unterstützt mkdir() Nein Ja Nein
Unterstützt rmdir() Nein Ja Nein

Kontextoptionen
Name Verwendung Voreinstellung
session Vorab verbundene ssh2-Ressource, die wiederverwendet werden soll  
sftp Vorab zugewiesene sftp-Ressource, die wiederverwendet werden soll  
methods Schlüsselaustausch, Host-Schlüssel, Verschlüsselung, Komprimierung und MAC-Methoden, die verwendet werden sollen  
callbacks  
username Der Benutzername für die Verbindung  
password Das Passwort für die Authentifizierung  
pubkey_file Der Name der Datei, die den öffentlichen Schlüssel für die Authentifizierung enthält  
privkey_file Der Name der Datei, die den privaten Schlüssel für die Authentifizierung enthält  
env Ein assoziatives Array der zu setzenden Umgebungsvariablen  
term Der Typ der Terminalemulation, der bei der Zuweisung eines pty angefordert wird  
term_width Die Breite des Terminals, die bei der Zuweisung eines pty angefordert wird  
term_height Die Höhe des Terminals, die bei der Zuweisung eines pty angefordert wird  
term_units Die Einheiten, die für term_width und term_height verwendet werden sollen SSH2_TERM_UNIT_CHARS

Beispiele

Beispiel #1 Öffnen eines Streams aus einer aktiven Verbindung

<?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');
?>

Beispiel #2 Diese $session-Variable muss immer verfügbar sein!

Um die ssh2.*://$session-Wrapper verwenden zu können, muss die Ressourcenvariable $session erhalten bleiben. Der folgende Code hat nicht die gewünschte Wirkung:

<?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() schließt die Session, weil $connection_string keinen Verweis auf die Variable $session enthält, sondern nur eine von ihr abgeleitete Zeichenkette. Dies ist auch der Fall, wenn unset() implizit aufgerufen wird, weil der Gültigkeitsbereich verlassen wird (z. B. bei einer Funktion).

add a note

User Contributed Notes 4 notes

up
8
exptom
12 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
8
bluej100 at gmail dot com
12 years ago
Be aware that opendir is currently broken on sftp root directories, but you can work around it by appending a dot. See http://stackoverflow.com/a/16238476/69173.
up
3
guilhem at no dot spam dot answeb dot net
8 years ago
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');
?>
up
-2
thomas at gielfeldt dot dk
8 years 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

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant