Usar Ubuntu para intercambiar archivos con un servidor Proxmox VE mediante SSH
Ya vimos hace un tiempo Cómo almacenar una imagen ISO en Proxmox VE. Básicamente, la idea era enviar un archivo en formato ISO desde un ordenador de escritorio al servidor Proxmox VE o, directamente, descargarla desde éste.
Sin embargo, puede haber otras situaciones en las que necesitemos intercambiar archivos con un servidor Proxmox VE, y no necesariamente a la ruta indicada en aquél artículo… Ni siquiera tiene que ser siempre una operación de subida.
De hecho, hoy aprenderemos a realizar este tipo de operaciones usando el protocolo SSH desde un ordenador con Ubuntu, tanto desde la terminal como desde la interfaz gráfica.
Las técnicas explicadas en este artículo no sirven solo para Proxmox VE, si no que podemos usarlas en cualquier servidor GNU/Linux que tenga instalado el protocolo SSH.
Por cierto, si necesitas saber más sobre SSH, puedes consultar los artículos publicados en SomeBooks.es sobre el tema. Y para obtener más información sobre Proxmox VE, puedes hacer clic aquí.
Copiar un archivo del ordenador local al servidor mediante comandos
La implementación del protocolo SSH incluye el comando scp, que facilita la transmisión remota de archivos de un modo parecido a como lo hace el comando cp de GNU/Linux.
Por ejemplo, si quisiéramos subir un archivo al servidor, podríamos usar la sintaxis:
scp archivo-local usuario@servidor:ruta
Analicemos la sintaxis anterior:
-
archivo-local sería el archivo que queremos enviar al servidor. Si es necesario, puede incluir la ruta donde se encuentra. Incluso podemos escribir varios nombres de archivo, separados por comas, o usar caracteres comodín.
-
usuario sería una cuenta del servidor con privilegios para escribir en la ruta donde queremos almacenar el archivo.
-
servidor sería el nombre, o la dirección IP, del servidor.
-
ruta sería la ubicación, en el disco duro del servidor, donde queremos almacenar el archivo. Si no especificamos una ruta, el archivo se copiará a la carpeta home del usuario que estamos usando.
Para ilustrar su funcionamiento, vamos a suponer que queremos resolver el problema del artículo mencionado arriba, pero usando el comando scp.
Lo primero habrá sido descargar la imagen ISO en el ordenador local. En nuestro caso, la de Ubuntu 20.04.2 LTS .
A continuación, abriremos una ventana de Terminal (por ejemplo, usando la combinación de teclas Alt + Control + T.) y nos desplazaremos hasta la carpeta Descargas. Así, nos ahorraremos la necesidad de incluir la ruta del archivo en el comando scp:
cd Descargas
Después de esto, estaremos listos para realizar la copia del archivo. La sintaxis será la siguiente:
Por ejemplo, si quisiéramos resolver el mismo problema del artículo mencionado arriba, pero usando el comando scp, podríamos hacer lo siguiente:
scp ubuntu-20.04.2.0-desktop-amd64.iso root@192.168.1.4:/var/lib/vz/template/iso/
Como ves, hemos utilizado el usuario root, la dirección IP del servidor y la ruta donde Proxmox VE almacena las imágenes ISO. Es fácil imaginar que, si hubiésemos querido almacenar el archivo en una ruta diferente, bastaría con haberla escrito.
Como es la primera vez que nos conectamos con el servidor, nuestro ordenador nos avisa de que no conoce la clave pública que se está ofreciendo el servidor y nos pregunta si debe seguir con la conexión.
Dado que estamos en un entrono de red controlado y estamos seguros de que el servidor al que nos estamos conectando es confiable, contestamos yes (sí) a la pregunta.
A continuación, para completar la conexión, deberemos escribir la contraseña de la cuenta de usuario que estamos utilizando.
Al hacerlo comenzará la transferencia de datos. El intérprete de comandos nos irá mostrando el porcentaje que va siendo enviado…
Para comprobar que todo ha sido correcto, basta con acceder a la página de administración de Proxmox VE y dirigirnos al lugar donde se muestran las imágenes ISO almacenadas.
Además de scp, otras herramientas de intercambio de archivos, como sftp o rsync también hacen uso del protocolo SSH para realizar su trabajo de forma segura.
Copiar un archivo del servidor al ordenador local mediante comandos
Imagina por un momento que la situación es a la inversa. Es decir, tenemos un archivo en el servidor y necesitamos descargarlo a nuestro ordenador de escritorio. La solución sería básicamente la misma, pero invirtiendo el orden de los argumentos:
scp usuario@servidor:archivo-remoto ruta-local
Adaptándolo a nuestra situación, quedaría algo como esto:
scp root@192.168.1.4:/var/lib/vz/template/iso/ubuntu-20.04.2.0-desktop-amd64.iso ./
Como ves, ahora la complejidad se encuentra en la primera parte del comando. Es decir, el origen de la copia en el equipo servidor. Aquí, indicaremos el nombre del usuario, el nombre o la dirección IP del equipo servidor y la ruta completa del archivo.
Por el contrario, en el destino de la copia nos limitamos ha hacer referencia al directorio actual (./), porque estamos suponiendo que antes nos hemos desplazado hasta el lugar donde queremos guardar el archivo.
Como cabe esperar, antes de que se inicie la copia deberemos escribir la contraseña de la cuenta del servidor que estamos utilizando. De esta forma, el servidor podrá comprobar que tenemos los permisos necesarios.
Ahora sí, veremos que la transferencia del archivo se inicia de forma inmediata. Además, el intérprete de comandos nos irá mostrando el porcentaje que va siendo enviado…
Transferir archivos entre el ordenador de escritorio y el servidor usando la interfaz gráfica
El explorador de archivos Nautilus, que acompaña a Ubuntu de forma predeterminada, tiene la capacidad de mostrar directorios remotos usando el protocolo SSH. Para lograrlo, basta con abrir una nueva ventana del explorador y mostrar la barra de direcciones (por ejemplo, usando la combinación de teclas Ctrl + L).
Ahí escribiremos algo como esto:
ssh://usuario@servidor
Como seguramente hayas deducido:
-
ssh:// informa a Nautilus del protocolo que debe utilizar.
-
usuario será el nombre de la cuenta del servidor con privilegios sobre la ruta donde queremos trabajar.
-
servidor sería el nombre, o la dirección IP, del servidor.
Adaptándolo a nuestras necesidades, quedaría algo así:
ssh://root@192.168.1.4
Igual que en modo texto, Nautilus deberá comprobar que tenemos privilegios para establecer la conexión.
Al hacerlo, se mostrará la carpeta raíz del sistema remoto.
A modo de ejemplo, usaremos la misma ruta que en los apartados anteriores, pero podríamos acceder a cualquier otro punto del árbol de directorios.
A partir de aquí, podríamos comportarnos como si se tratara de una ubicación local. Por ejemplo, podríamos abrir una segunda ventana de Nautilus, con una ubicación local…
Y para subir un archivo al servidor, bastaría con arrastrarlo desde la ventana con la ubicación local a la ventana con la ubicación remota.
Como puedes imaginar, también podríamos hacerlo a la inversa.
Podremos seguir el progreso haciendo clic sobre el icono con esa función en la barra de herramientas
El tiempo empleado para la transferencia estará en función del tamaño del archivo y de la red que estemos utilizando.
Y con esto completamos el contenido de este artículo.
Espero que te resulte útil.