ssh2://

ssh2://Shell seguro 2

Descripción

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

Nota: Esta envoltura no está activada por omisión
Para utilizar la envoltura ssh2://, la extensión » SSH2 disponible en » PECL debe ser instalada.

Además de aceptar las identificaciones tradicionales mediante la URI, la envoltura ssh2 reutilizará las conexiones abiertas pasando la recurso de conexión en la parte host de la URL.

Uso

  • 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

Opciones

Resumen de la envoltura
Atributo ssh2.shell ssh2.exec ssh2.tunnel ssh2.sftp ssh2.scp
Restringido por allow_url_fopen
Permite la lectura
Permite la escritura No
Permite el añadido No No No Sí (cuando sea soportado por el servidor) No
Permite la lectura y escritura simultáneamente No
Soporte de la función stat() No No No No
Soporte de la función unlink() No No No No
Soporte de la función rename() No No No No
Soporte de la función mkdir() No No No No
Soporte de la función rmdir() No No No No

Opciones de contexto
Nombre Uso Por omisión
session recurso ssh2 pre-conectado para reutilizar  
sftp recurso sftp pre-asignado para reutilizar  
methods métodos de intercambio de claves, hostkey, cifrado, compresión y MAC a utilizar  
callbacks    
username Nombre de usuario para la conexión  
password Contraseña a utilizar durante la identificación por contraseña  
pubkey_file Nombre del archivo que contiene la clave pública a utilizar durante la identificación  
privkey_file Nombre del archivo que contiene la clave privada a utilizar durante la identificación  
env Array asociativo de variables de entorno a definir  
term Tipo de emulación de terminal a solicitar durante la asignación de un pty  
term_width Ancho del terminal a solicitar durante la asignación de un pty  
term_height Alto del terminal a solicitar durante la asignación de un pty  
term_units Unidades a utilizar con term_width y term_height SSH2_TERM_UNIT_CHARS

Ejemplos

Ejemplo #1 Apertura de un flujo desde una conexión activa

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

Ejemplo #2 La variable $session debe permanecer disponible

Para utilizar la envoltura ssh2.*://$session, la variable de recurso $session debe ser conservada. El código a continuación no tendrá el efecto deseado:

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

La función unset() cierra la sesión, ya que la variable $connection_string no contiene una referencia a la variable $session, sino solo una cadena derivada. Esto también ocurre cuando la función unset() es implícita, durante una salida del ámbito (como en una función).

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
7
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 https://bugs.php.net/bug.php?id=64169 and http://stackoverflow.com/a/16238476/69173.
up
5
guilhem at no dot spam dot answeb dot net
7 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
0
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