WinSCP Command-Line Simplificado: Tu Referencia Completa

WinSCP, una herramienta esencial para transferencias de archivos seguras, ofrece más que solo una interfaz gráfica de usuario. La funcionalidad de línea de comandos WinSCP permite a los profesionales de TI y administradores de sistemas gestionar y automatizar las transferencias de archivos directamente desde la consola, mejorando la eficiencia y flexibilidad en su flujo de trabajo.

Para a potential profundidad de la GUI de WinSCP, consulte la publicación complementaria a esta publicación, La GUI de WinSCP: La guía definitiva.

Descubra cada función de línea de comandos que ofrece WinSCP en esta Guía definitiva. Aprenderá, paso a paso, cómo aprovechar la línea de comandos WinSCP para maximizar su productividad y optimizar sus procesos de transferencia de archivos.

Vamos a adentrarnos en el mundo de la gestión de archivos de línea de comandos con WinSCP!

Requisitos para usar la línea de comandos de WinSCP

  • A Windows XP+ PC – This tutorial will use Windows 10 Enterprise.
  • A remote Linux host – This tutorial will use an Ubuntu 18.04.5 LTS machine.
  • A user account on the remote SSH host with sudo permissions.

Generación de una URL de sesión con la línea de comandos WinSCP

Si bien la GUI de WinSCP ofrece una conveniente ventana de Inicio de sesión para configurar conexiones, la línea de comandos de WinSCP requiere un enfoque diferente. En lugar de ventanas interactivas, debes especificar los atributos de conexión de una manera más directa.

Connection attributes

Para instructuar a la línea de comandos de WinSCP dónde conectarse, se usa una URL de sesión. Esta URL encapsula los atributos de conexión definidos en la GUI.

A basic session URL follows this structure:

<protocol>://<username>:<password>@<host name>/<folder path>

Por ejemplo, para conectarse al host 1.1.1.1 con el nombre de usuario adam y la contraseña pw usando SFTP en WinSCP, la URL de sesión sería:

sftp://adam:pw@1.1.1.1

Si has configurado un sitio en WinSCP, puedes encontrar fácilmente la URL de sesión. Abre la interfaz gráfica de WinSCP, haz clic en Sesión, haz clic derecho en tu sitio y selecciona Generar URL/Código de Sesión.

WinSCP site

La ventana de diálogo de URL de sesión proporciona varias opciones de personalización para tu conexión, cada una influyendo en cómo WinSCP interactúa con el host remoto.

  • Directorio inicial – Especifica el directorio remoto que WinSCP abrirá al conectarse.
  • Clave de host SSH – Utiliza una clave SSH existente para la autenticación del host remoto.
  • URL específica de WinSCP – Genera una URL de sesión única, como WinSCP-sftp://, específicamente para la comprensión de WinSCP, evitando conflictos con los navegadores web por defecto.
  • Extensión de guardado – A menudo se combina con URL específicas de WinSCP para minimizar aún más los conflictos de la aplicación.

Cuando todas las opciones están habilitadas, el formato de la URL de sesión debería parecerse al siguiente:

<protocol>://<username>:<password>@<host name>/<folder path><save extension>
Generate Session URL/Code

Domina la Línea de Comandos de WinSCP: Generación de Código de Conexión de Sesión

Con tu URL de sesión lista, WinSCP va un paso más allá al ofrecer ejemplos de código en la pestaña Generar URL/Código de Sesión de la ventana Script. Aquí, puedes seleccionar entre diferentes tipos de scripts:

  • Archivo de script
  • Archivo por lotes
  • Script de PowerShell en línea de comandos
  • Script de PowerShell

Elige tu tipo de script preferido y WinSCP generará la sintaxis necesaria para conectarte a un host remoto usando la línea de comandos de WinSCP.

Generating Session Connection Code

Para codificar en .NET, C# o PowerShell, cambia a la pestaña de código de ensamblado .NET, como se muestra a continuación.

.NET assembly code tab

Entendiendo WinSCP.exe vs. WinSCP.com en el Contexto de la Línea de Comandos de WinSCP

Saber cómo generar una URL de sesión es crucial para usar las herramientas de línea de comandos de WinSCP. Vamos a explorar cómo conectarnos a un host usando estas herramientas, empezando por entender las diferencias entre winscp.exe y winscp.com.

Winscp.exe funciona como lanzador de la GUI y como utilidad de línea de comandos para tareas simples. Puedes usarlo para comandos básicos si especificas los parámetros correctos.

Considera winscp.exe como un puente entre las características de la GUI y la interfaz de línea de comandos de WinSCP.

Para tareas más complejas, especialmente en scripting, winscp.com es tu opción. Esta herramienta basada en consola es ideal para scripts de automatización y soporta una variedad de funciones SSH. Proporciona una verdadera experiencia de línea de comandos de WinSCP no interactiva.

Independientemente de tu elección, comienza abriendo un símbolo del sistema (ya sea cmd.exe o PowerShell) y navega al directorio de instalación de WinSCP.

cd 'C:\Program Files (x86)\WinSCP'

Con el símbolo del sistema listo, procedamos a usar WinSCP para conexiones remotas.

Utilizando WinSCP.exe: Conexión a hosts remotos con URLs de sesión

Uno de los métodos más simples para conectar a un host remoto con la línea de comandos de WinSCP es ejecutando winscp.exe con la URL de la sesión como un parámetro. Por ejemplo, para conectar al host 54.179.19.216 con el nombre de usuario automate y la contraseña automate usando sftp, y luego navegar al directorio /tmp, use el siguiente comando:

WinSCP.exe sftp://automate:automate@54.179.19.216/tmp/

Para mayor seguridad, en lugar de usar una contraseña, puedes conectarte a un host remoto utilizando una clave privada con el parámetro /privatekey. Si bien este método es más seguro, las complejidades de configurar una clave privada van más allá del alcance de este tutorial en la línea de comandos de WinSCP.

Veamos un ejemplo de conexión al host 54.179.19.216 utilizando el nombre de usuario automate y una clave privada mykey.ppk sobre scp.

winscp.exe scp://[email protected]/tmp/ /privatekey=mykey.ppk

Descargando Archivos Eficientemente con WinSCP.exe Sin un Sitio

La Línea de comando de WinSCP a través de winscp.exe te permite transferir archivos de manera rápida utilizando conexiones ad-hoc, incluso sin un sitio WinSCP predefinido. Veamos cómo descargar archivos desde un host remoto sin una configuración de sitio. Por ejemplo, descargar todos los archivos en el directorio /tmp del host remoto 54.179.19.216 usando SFTP.

1. Comience generando una URL de sesión. A continuación se muestra un ejemplo de conexión al host remoto con las credenciales automate y aterrizando en el directorio /tmp.

# URL de Sesión Generada
sftp://automate:automate@54.179.19.216/tmp

2. Ejecute winscp.exe con la URL de sesión para acceder al cuadro de diálogo de configuración de transferencia de WinSCP. El directorio local se establece por defecto en ~\Documentos, y WinSCP apuntará a todos los archivos (\\*.*) en el directorio remoto.

# Sintaxis del Comando: winscp.exe [/ruta/[archivo]]
winscp.exe sftp://automate:automate@54.179.19.216/tmp

3. Haga clic en Aceptar para iniciar la transferencia. WinSCP descargará todos los archivos del directorio remoto /tmp a su directorio local elegido a través de SFTP.

Downloading the Files without a Site

Cargando Archivos Usando WinSCP.exe Sin un Sitio

Después de dominar las descargas de archivos, cambiemos a la carga de archivos a un host remoto usando la línea de comandos de WinSCP con winscp.exe. El proceso es similar a la descarga, pero esta vez también deberá usar el interruptor /upload, especificando el archivo o carpeta que desea cargar.

# Cargando el archivo a.txt usando winscp.exe al servidor remoto sin un sitio.
.\WinSCP.exe sftp://automate:automate@54.179.19.216/tmp/ /upload C:\Users\shanky\Desktop\a.txt

Ejecutar el comando anterior muestra el cuadro de diálogo de carga de WinSCP, indicando los archivos a cargar (*.*) en el directorio /tmp del host remoto.

Uploading the Files without a Site

Después de cargar, inicia sesión en el host remoto con un cliente SSH y verifica el éxito de la carga con comandos como pwd y ls -lh, que mostrarán el contenido del directorio, confirmando la transferencia exitosa.

File Uploaded Successfully on Remote Machine

Aprovechando WinSCP.exe para descargar archivos utilizando un sitio

Mientras que las URL de sesión son prácticas para conexiones ad-hoc, tener un sitio preconfigurado en WinSCP simplifica el proceso. Si has estado utilizando WinSCP durante algún tiempo, es probable que ya tengas varios sitios configurados.

Con winscp.exe, puedes utilizar fácilmente estos sitios, creados en la interfaz gráfica, para conectarte a un host remoto, evitando la necesidad de recordar detalles de la URL de la sesión.

Para localizar sitios guardados en WinSCP, navega a Sesión -> Sitios -> Administrador de sitios.

Por ejemplo, veamos cómo descargar archivos utilizando un sitio preexistente con la línea de comandos de WinSCP.

1. Conéctate al host remoto utilizando un sitio de WinSCP configurado. El siguiente ejemplo muestra una conexión usando un sitio llamado Adamsite.

# Conectar con un sitio de WinSCP
winscp.exe Adamsite

Una vez conectado, WinSCP muestra una notificación de estado.

Connecting to Remote Machine Using a Site

2. A continuación, ejecuta winscp.exe con el protocolo (sftp), el nombre del sitio (Adamsite) y el directorio de destino (/tmp). Este enfoque abre el cuadro de diálogo de configuración de transferencia de WinSCP, listo para las acciones de descarga de archivos.

# Iniciar conexión remota usando un sitio
winscp.exe sftp://Adamsite/tmp

Haga clic en Aceptar para comenzar a descargar todos los archivos del directorio /tmp del host remoto a su directorio local a través de SFTP.

Downloading Files Using a Site

Para subir archivos desde su máquina local a un host remoto, el proceso es análogo. Utilice el interruptor /upload junto con la ruta del archivo o directorio, como winscp.exe Site3 /upload .\license.txt. No es necesario especificar la URL completa (sftp://Adamsite/tmp).

Optimización de la edición remota de archivos con WinSCP.exe

¿Necesita editar un archivo de texto en un host remoto? Evite el ciclo de descarga-edición-subida manual. La línea de comandos de WinSCP ofrece un método más eficiente utilizando el parámetro /edit. Simplemente especifique el nombre del sitio, /edit, y la ruta del archivo remoto.

Ejemplo:

# Editando un archivo en un host remoto
winscp.exe /edit /Adamsite/path/to/file.txt
# Utilizando la línea de comandos de WinSCP para editar un archivo remoto
.\WinSCP.exe Adamsite /edit /tmp/a.txt

Ejecutar el comando anterior abre su editor de texto predeterminado, permitiéndole modificar el archivo remoto según sea necesario. Esta integración perfecta es una característica clave de las capacidades de la línea de comandos de WinSCP.

Editing Remote Files Using a Site

Después de editar, simplemente guarde el archivo. WinSCP se encarga de actualizar el archivo en el host remoto, optimizando el proceso de edición-subida.

Optimización del flujo de trabajo con el registro de sesión de WinSCP.exe

Para un registro completo de tus acciones, el comando de línea de WinSCP ofrece registro de sesiones. Esta función es invaluable para rastrear los comandos ejecutados durante una sesión, ayudando en la solución de problemas y el mantenimiento de registros.

Para habilitar el registro de sesiones, incluye hasta tres parámetros al conectarte a una sesión:

# Parámetros para el registro de sesiones
/log="<log file path>" /loglevel=<level> /logsize=<size>
  • /log – Especifica la ruta para el archivo de registro.
  • /loglevel – Establece la verbosidad de los registros, que va desde Reducido (1) hasta Depuración (2).
  • /logsize – Define el tamaño y la rotación del archivo de registro, en el formato <archivos de registro archivados totales>*<tamaño máximo del archivo de registro>.

A continuación, se muestra un ejemplo de winscp.exe conectándose a un host y registrando la actividad en C:\winscp.log con un nivel de Depuración. El comando mantiene hasta cinco archivos de registro de 10 MB (5*10MB).

# Ejemplo de registro de sesión de WinSCP
winscp.exe sftp://[email protected]/tmp/ /log="C:\\winscp.log" /loglevel=2 /logsize=5*10M

Explorando Funciones Avanzadas con Comandos Interactivos de WinSCP.com

Mientras que winscp.exe proporciona una excelente introducción a las conexiones remotas, winscp.com mejora tu experiencia en la línea de comandos, ofreciendo una interacción y control más profundos.

Comienza abriendo winscp.com en un entorno de línea de comandos. Ingresarás a una sesión interactiva similar a SSH, indicada por el prompt winscp>.

.\WinSCP.com

Conéctate a una computadora remota utilizando el comando open, seguido del nombre del sitio deseado.

open Adamsite

Después de conectar al host remoto a través de la línea de comandos de WinSCP, como se ilustra con Adamsite, te encontrarás en un entorno similar a una sesión SSH. Aquí, puedes ejecutar comandos e interactuar eficientemente con el host remoto.

Interactively Running Commands using winscp.com

Mejorando la seguridad: Conexión con un Nuevo Par de Claves (Clave de Host) en WinSCP

La autenticación de clave pública mejora la seguridad al conectar sesiones. Para usarla, primero obtén la huella digital de la clave de host para tu sesión. Utiliza el comando ssh-keygen en la carpeta de WinSCP siguiendo la sintaxis a continuación.

Este comando genera un par de claves SSH, esencial para una autenticación segura. Una vez ejecutado, recibirás una huella digital necesaria para las conexiones de sesión de winscp.com.

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
Verifying SSH Key Fingerprint

Para conectar con el parámetro hostkey, proporciona la huella digital generada como se muestra en el ejemplo a continuación.

Incluye el prefijo ssh-rsa 2048 al utilizar la huella digital de ssh-keygen.

winscp.com open sftp://automate:[email protected]/  -hostkey="ssh-rsa 2048 x4DeZzv4jcWEk2zeeJgr5JeJ+z0xA+lGa3LC0q/B+88="

Maximizando la eficiencia con WinSCP.com: Utilizando el parámetro /command.

Aunque las sesiones interactivas son excelentes para ciertas tareas, la ejecución de comandos no interactivos es crucial para la creación de scripts y la automatización. winscp.com admite esto a través del parámetro /command, lo que te permite establecer una sesión, ejecutar un comando y desconectarte en un solo paso.

Por ejemplo, utiliza el parámetro /command para transferir un archivo local a un host remoto. El siguiente ejemplo demuestra cómo copiar un archivo desde C:\abc\abc.txt al directorio /tmp en el host remoto 13.213.61.127.

El parámetro /command toma dos argumentos como cadenas: uno para establecer la sesión y otro para la ejecución real del comando.

# Transferencia de archivos no interactiva con WinSCP
WinSCP.com /command "open sftp://adam:[email protected]/tmp" "put C:\\abc\\abc.txt"
Session log for adam@13.213.61.127
C:\abc\abc.txt            |            0 B |    0.0 KB/s | binary |   0%

Automatización de tareas con WinSCP.com: El parámetro /script

Para necesidades de automatización más complejas, el parámetro /script en winscp.com te permite ejecutar una serie de comandos desde un script. Esta característica es invaluable al manejar tareas repetitivas u operaciones complejas en hosts remotos.

Para utilizar el parámetro /script en línea de comandos de WinSCP, comienza creando un archivo de script llamado upload_file_script.txt en tu escritorio con tu editor de texto preferido.

Prepara un archivo de texto en blanco llamado a.txt en el directorio /tmp de tu computadora remota.

Crea un directorio local en C:\abc.

A continuación, ingrese el siguiente contenido en upload_file_script.txt y guárdelo. Este script descarga el archivo a.txt desde el directorio remoto /tmp y lo vuelve a cargar como new_file.txt.

# Script de WinSCP para Transferencia de Archivos
 open sftp://automate:automate@54.179.19.216/  -hostkey="ssh-rsa 2048 x4DeZzv4jcWEk2zeeJgr5JeJ+z0xA+lGa3LC0q/B+88="
 cd /tmp
 get a.txt C:\abc\
 close
 open sftp://automate:automate@54.179.19.216/ -hostkey="ssh-rsa 2048 x4DeZzv4jcWEk2zeeJgr5JeJ+z0xA+lGa3LC0q/B+88="
 cd /tmp
 put C:\abc\new_file.txt 
 close
 exit

Ejecute este script utilizando el parámetro /script en WinSCP con el siguiente comando:

Utilice el interruptor /ini=nul para evitar que WinSCP guarde cualquier configuración de sesión al salir.

winscp.com /ini=nul /script=upload_file_script.txt
   # Salida
   Authenticating...
   Session started.
   /tmp
   a.txt                     |           10 B |    0.0 KB/s | binary | 100%
   Session closed.
   # Nueva sesión para carga
   Session started.
   /tmp
   C:\abc\new_file.txt       |            0 B |    0.0 KB/s | binary |   0%
   Session closed.

Utilizando WinSCP.com para Conversión de Claves

WinSCP admite autenticación basada en contraseña y en certificado o autenticación basada en clave pública. Para usar la autenticación basada en clave pública, se requiere un formato de clave privada compatible. WinSCP ayuda a convertir formatos de clave para que sean compatibles.

Por ejemplo, convierta una clave privada en formato PEM (como las de AWS EC2) a un formato compatible con Putty usando la línea de comandos de WinSCP. El parámetro /keygen en winscp.com facilita esta conversión.

  • Aplica el parámetro /keygen, seguido de la ruta actual de la clave.
  • Incluye el parámetro -o para especificar la ruta del archivo de salida de la clave convertida.
  • Opcionalmente, utiliza el parámetro -c para agregar un comentario a la clave convertida.
.\WinSCP.com /keygen C:\Users\shanky\Desktop\testing.pem -o C:\Users\shanky\Desktop\testing.ppk -c "Converted from OpenSSH format"

Conclusión

Con esta guía completa de la línea de comandos de WinSCP, junto con la Guía de la interfaz gráfica de WinSCP, ahora estás preparado para aprovechar al máximo las capacidades de WinSCP. Ya sea para transferencias de archivos, ejecución de comandos, ejecución de scripts o conversiones de claves, WinSCP es una herramienta versátil para cualquier profesional de TI.

¿Cómo planeas integrar WinSCP en tu flujo de trabajo? ¡Comparte tus pensamientos y experiencias!

Source:
https://adamtheautomator.com/winscp-command-line/