¡Sí, Windows PowerShell tiene soporte para conexiones sFTP! Puedes manejar conexiones sFTP y sincronizar tus archivos en el servidor usando comandos SSH directamente con OpenSSH. Fácil, sencillo y práctico

sFTP es la abreviatura de Secure File Transfer Protocol (Protocolo de transferencia segura de archivos). Este protocolo permite transferir datos cifrados entre tu ordenador local y el espacio web del que dispones en tu hosting a través de Secure Shell (SSH). A modo de ejemplo vamos a subir una Base de Datos (ficticia) de KeepAss a nuestro servidor para disponer de un acceso concurrente desde cualquier dispositivo (Windows o Android).

El protocolo de transferencia de archivos SFTP es completamente independiente del sistema operativo que utilices, y puedes usarlo desde Windows 10. Podrás transferir archivos a través de sFTP, también permite visualizar directorios, cambiar el nombre o limitar derechos. sFTP es la evolución de FTP (File Transfer Protocol), pero implica una mayor seguridad.

También puedes usar un programa sFTP para subir archivos o crear una copia de seguridad del sitio web con sFTP. Si quieres usar uno, te recomendamos WinSCP.

Vamos lo que vamos a ver aquí es cómo podemos usar el sFTP para conectarnos a nuestro hosting y administrar archivos de forma práctica, directamente desde el PowerShell de Windows sin necesidad de instalar otras aplicaciones. Usaremos una base de datos como ejemplo de transferencia de archivos entre tu equipo y el servidor.

Antes de nada, deberás disponer de tus credenciales de acceso a tu servidor sFTP. Puede conseguirlas en el Panel de Control del servicio de Hosting que tengas contratado. Necesitarás:

  • Un servidor SFTP accesible y configurado correctamente (de eso se encarga tu proveedor de Hosting).
  • Dirección del servidor sFTP (Host)
  • Nombre de usuario
  • Contraseña

Iniciamos una Consola de PowerShell (Administrador)

Para iniciar una consola de PowerShell como Administrador en Windows, busca «PowerShell» en el menú de inicio, haz clic derecho y selecciona «Ejecutar como administrador». También puedes usar métodos alternativos como el menú rápido (Win + X > PowerShell (Administrador)).

Verifica que OpenSSH está instalado

Windows 10 y versiones superiores incluyen OpenSSH como una característica opcional. Para verificar si está instalado:

  1. Deberás tener PowerShell abierto como Administrador.
  2. Ejecuta el siguiente comando:
    Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Comandos SSH en Windows 10/11
  1. Si ves OpenSSH.Client~~~~0.0.1.0 en la lista, el cliente SSH está instalado. Si no, instálalo con:
    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Conéctate a tu servidor

Para poder conectarnos con éxito a nuestro servidor deberemos suministrarle nuestras credenciales. Vaya, que debemos decirle quienes somos. Ten a mano tu dirección, nombre de usuario y contraseña.

  1. Iniciamos una sesión sFTP, indicando nuestro nombre de usuario@servidor:
    sftp usuario@servidor
  2. A continuación nos pedirá nuestra contraseña. Lo mejor es escribirla directamente (no uses copia/pega). Con tranquilidad, no verás movimiento del cursor, pero estarás escribiendo los caracteres en la consola según vas pulsando las teclas. Pulsa Enter para enviar la contraseña. El servidor te dará el mensaje de respuesta a través de la consola indicándote que te has conectado con éxito.

Si todo ha ido bien, recibirás un mensaje similar a este:

PS C:\WINDOWS\system32> sftp usuario@servidor
usuario@servidor's password:
Connected to servidor.
sftp>

Comprobamos que estamos en el sitio correcto

Para comprobar que estamos en el lugar correcto (seguro que sí), podemos echar un vistazo a la lista de los archivos y carpetas que se encuentran en la ubicación a la que nos hemos conectado usando el comando ls (list files and directories). Así, deberemos escribir ls y pulsar intro.

Subimos nuestra Base de Datos de Keepass al servidor

Para poder iniciar la transferencia, deberemos indicar de dónde sale nuestra base de datos ( .kdbx ) para que sFTP pueda transferirla a la ubicación del servidor en la que nos encontramos actualmente. Esta orden la efectuamos usando el comando put (colocar):

put ruta/carpeta/subcarpeta/base-datos.kdbx

Deberás sustituir la ruta por la ubicación actual de tu base de datos. Si tu base de datos se encuentra en el escritorio vendría a ser algo así como:

put C:\Users\Paco\Desktop\base-datos.kdbx

Si todo va bien, la respuesta que obtendrás será algo así como:

sftp> put C:\Users\Paco\Desktop\base-datos.kdbx
Uploading C:/Users/Paco/Desktop/base-datos.kdbx to /base-datos.kdbx
base-datos.kdbx 100% 0 6.1KB/s 00:01
sftp>

Y listo. Ya tienes tu archivo de base de datos colocado en el servidor, listo para acceder desde cualquier lugar y con cualquier aplicación compatible como por ejemplo Keepass2Android Password Safe (Android).

Si necesitas ayuda sobre cómo configurar la aplicación para acceder desde Windows o Android, échale un ojo a Sincronizar la base de datos de KeePass en Windows y Android (sFTP).

Lista de comandos disponibles

Por si quieres probar, aquí tienes una lista de los comandos disponibles junto con su función:

  • ls : Lista los archivos y directorios del directorio remoto actual.
  • cd [nombre_directorio] : Cambia el directorio remoto actual a nombre_directorio.
  • lcd [nombre_directorio] : Cambia el directorio local actual; útil para establecer desde dónde se descargarán o cargarán los archivos.
  • get [nombre_archivo] : Descarga el archivo desde el servidor remoto a la máquina local.
  • put [nombre_archivo] : Carga el archivo desde el equipo local al servidor remoto.
  • mkdir [nombre_directorio] : Crea un nuevo directorio en el servidor remoto.
  • rmdir [nombre_directorio] : Elimina un directorio del servidor remoto (el directorio debe estar vacío).
  • exit o quit : Cierra la conexión con el servidor remoto y sale de SFTP.

Para que puedas entender como funciona la transferencia de archivos con PowerShell lo mejor que puedes hacer es probarlo. Y recuerda que los experimentos con gaseosa, así que no hagas pruebas con archivos importantes. Lo mejor es comprobar que funciona correctamente con un archivo de texto (.txt) vacío y así no habrá peligro. En cuanto veas que todo funciona correctamente, prueba a eliminarlo del servidor, y podrás dar el paso de transferir archivos a tu servidor con confianza y seguridad.

Suerte.