Conexión a SFTP-SSH2 con PHP

En este post describo rápidamente como conectarse con PHP a un servidor SFTP que utilice SSH2. Debe notarse que SFTP no es lo mismo que FTP sobre SSL.

Primero debe de instalarse la extensión PECL/ssh2, la cual requiere las librerías OpenSSL y libssh2. La extensión puede ser instalada con PEAR: pear install ssh2, luego se agrega la extensión a php.ini y se reinicia el servidor web. Para confirmar que la instalación haya sido exitosa se puede revisar que la sección Registered PHP Streams incluya el conjunto de protocolos de SSH2, entre ellos ssh2.sftp:

ssh2.sftp en php.ini

Las funciones principales para realizar la conexión son:

  • ssh2_connect: Establece una conexión hacia un servidor SSH.
  • ssh2_auth_password: Realiza la autenticación sobre SSH utilizando la dupla usuario/contraseña.
  • ssh2_sftp: Solicita el subsistema SFTP del servidor SSH al que se está conectado.

Ahora veamos un breve ejemplo de como utilizar estas funciones para descargar y cargar archivos a un servidor SFTP:

// Creando conexión a servidor SSH, puerto 22
$conexion = ssh2_connect("miservidor.com", 22);
// Autenticandose en el servidor
ssh2_auth_password($conn, "usuario", "password");
// Solicitando subsistema SFTP
$sftp = ssh2_sftp($conn);
// Cargando un archivo al servidor, usando el stream ssh2.sftp
$upload = copy("archivo.local", "ssh2.sftp://$sftp/archivo.remoto");

3 Comments

  1. Lucy
    Posted 20 de Enero de 2009 at 6:38 pm | Permalink

    Podría decirme como es q envia archivo.remoto y archivo.local ( DE ESTA MANERA TENGO EL VALOR DE $ARCHIVOLOCAL Y ARCHIVOREMOTO $archivoLocal = “C:/Documents and Settings/Administrador/Mis documentos/pruebas/guardarEdoEtapa.txt”; y
    $archivoRemoto = “/var/www/html/SFTP/guardarEdoEtapa.txt”;), ya q vi su ejemplo y es exactamente como lo tengo, solo q no funciona y no entiendo porq, eh buscado más información acerca de este tema pero ninguno trae una explicación completa, solo tienen el mismo ejemplo q usted muestra, podría decirme q es lo q le falta ó donde puedo encontrar un ejemplo completo.

  2. Posted 8 de Abril de 2009 at 10:12 pm | Permalink

    Como instalar SSH2 en un servidor local sobre windows?

  3. Posted 9 de Abril de 2009 at 4:50 am | Permalink

    Janckos: Para instalar SSH2 en Windows hay que copiar el archivo php_ssh2.dll al directorio “extensions_dir” (si tenés el archivo, está en el zip que podés bajar acá: http://php.net/get/pecl-5.2.6-Win32.zip/from/a/mirror).
    Luego hay que habilitarlo en el archivo php.ini: extension=php_ssh2.dll

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*