Este es una pequeña porción de código que sirve para transmitir un archivo mediante SSH (SFTP) directamente desde un programa en PHP.

Este código esta hecho para php-cli (PHP Command Line Interface o PHP por linea de comando), pero es valido para cualquier forma de programación en este lenguaje..

Cabe señalar que debemos compilar el modulo para php y son requerimientos básicos las librerías OpenSSL y libssh2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/php
< ?php
/* Establecemos la conexión al servidor */
$connection = ssh2_connect('ssh.servidor.com', 22);
 
/* Enviamos los datos de autenticación */
ssh2_auth_password($connection, 'usuario', 'passwd');
 
/* Establecemos que la transmisión es sobre SFTP */
$sftp = ssh2_sftp($connection);
 
/* Abrimos el archivo origen a transmitir */
/* La apertura es solo para lectura (r)*/
$input = fopen(&quot;archivo-entrada&quot;, &quot;r&quot;);
 
/* Abrimos el archivo destino en el servidor remoto */
/* La apertura es para escritura (w) y en formato binario (b) */
$output = fopen(&quot;ssh2.sftp://$sftp/archivo-salida&quot;, 'wb');
 
/* creamos un bucle hasta el final del archivo de entrada (EOF) */
while (!feof($input)) {
   /* Vamos leyendo de bloques de 8192 Bytes */
   $contents = fread($input, 8192);
 
   /* Escribimos los 8192 bytes en el flujo de salida */
   fwrite($output,$contents);
}
/* Cerramos los archivos */
fclose($input);
fclose($output);
?>;

Espero que les sirva esta información.

Pueden encontrar mas información en:

http://www.php-cli.com/
http://cl.php.net/manual/en/book.ssh2.php