Conexión a un sistema HPC remoto

Última actualización: 2025-08-04 | Mejora esta página

Hoja de ruta

Preguntas

  • ¿Cómo me conecto a un sistema HPC remoto?

Objetivos

  • Configure el acceso seguro a un sistema HPC remoto.
  • Conéctate a un sistema HPC remoto.

Conexiones seguras


El primer paso para utilizar un cluster es establecer una conexión desde nuestro portátil al cluster. Cuando estamos sentados frente a un ordenador (o de pie, o sosteniéndolo en nuestras manos o en nuestras muñecas), hemos llegado a esperar una pantalla visual con iconos, widgets, y quizás algunas ventanas o aplicaciones: una interfaz gráfica de usuario, o GUI. Dado que los clusters de ordenadores son recursos remotos a los que nos conectamos a través de interfaces lentas o intermitentes (WiFi y VPNs especialmente), es más práctico usar una interfaz de línea de comandos, o CLI, para enviar comandos como texto plano. Si un comando devuelve una salida, también se imprime como texto plano. Los comandos que ejecutaremos hoy no abrirán una ventana para mostrar resultados gráficos.

Si alguna vez has abierto el Símbolo del sistema de Windows o el Terminal de macOS, habrás visto una CLI. Si ya has tomado los cursos de The Carpentries sobre UNIX Shell o Version Control, has usado el CLI en tu máquina local extensivamente. El único salto a dar aquí es abrir un CLI en una máquina remota, tomando algunas precauciones para que otras personas en la red no puedan ver (o cambiar) los comandos que estás ejecutando o los resultados que la máquina remota envía de vuelta. Utilizaremos el protocolo Secure SHell (o SSH) para abrir una conexión de red encriptada entre dos máquinas, permitiéndote enviar y recibir texto y datos sin tener que preocuparte de miradas indiscretas.

Conectarse al clúster

Los clientes SSH suelen ser herramientas de línea de comandos en las que el único argumento necesario es la dirección de la máquina remota. Si tu nombre de usuario en el sistema remoto difiere del que utilizas localmente, debes proporcionarlo también. Si tu cliente SSH tiene un front-end gráfico, como PuTTY o MobaXterm, establecerás estos argumentos antes de hacer clic en “conectar” Desde el terminal, escribirás algo como ssh userName@hostname, donde el argumento es igual que una dirección de correo electrónico: el símbolo “@” se utiliza para separar el ID personal de la dirección de la máquina remota.

Al iniciar sesión en un ordenador portátil, tableta u otro dispositivo personal, normalmente se requiere un nombre de usuario, una contraseña o un patrón para evitar el acceso no autorizado. En estas situaciones, la probabilidad de que alguien intercepte tu contraseña es baja, ya que para registrar tus pulsaciones de teclas se requiere un exploit malicioso o acceso físico. Para sistemas como login1 que ejecutan un servidor SSH, cualquiera en la red puede iniciar sesión, o intentarlo. Dado que los nombres de usuario suelen ser públicos o fáciles de adivinar, la contraseña suele ser el eslabón más débil de la cadena de seguridad. Por lo tanto, muchos clusters prohíben el inicio de sesión basado en contraseña, requiriendo en su lugar que generes y configures un par de claves pública-privada con una contraseña mucho más fuerte. Incluso si tu cluster no lo requiere, la siguiente sección te guiará a través del uso de claves SSH y un agente SSH para reforzar tu seguridad y hacer más conveniente el inicio de sesión en sistemas remotos.

Mejor seguridad con claves SSH

La Lesson Setup proporciona instrucciones para instalar una aplicación shell con SSH. Si aún no lo ha hecho, abra esa aplicación shell con una interfaz de línea de comandos tipo Unix en su sistema.

Las claves SSH son un método alternativo de autenticación para obtener acceso a sistemas informáticos remotos. También se pueden utilizar para autenticarse al transferir archivos o para acceder a sistemas remotos de control de versiones (como GitHub). En esta sección crearás un par de claves SSH:

  • una clave privada que guardas en tu propio ordenador, y
  • una clave pública que puedes colocar en cualquier sistema remoto al que vayas a acceder.

Las claves privadas son tu pasaporte digital seguro

Una clave privada que sea visible para cualquiera excepto para ti debe considerarse comprometida y debe ser destruida. Esto incluye tener permisos inadecuados en el directorio en el que está almacenada (o una copia), atravesar cualquier red que no sea segura (encriptada), adjuntarla en un correo electrónico no encriptado, e incluso mostrar la clave en la ventana de tu terminal.

Protege esta clave como si abriera la puerta de tu casa. En muchos sentidos, lo hace.

Independientemente del software o sistema operativo que utilices, por favor elige una contraseña o frase de contraseña segura que actúe como otra capa de protección para tu clave SSH privada.

Consideraciones sobre las contraseñas de las claves SSH

Cuando se le solicite, introduzca una contraseña segura que pueda recordar. Hay dos enfoques comunes para esto:

  1. Crea una frase de contraseña memorable con algunos signos de puntuación y sustituciones de números por letras, de 32 caracteres o más. Las direcciones funcionan bien, pero ten cuidado con los ataques de ingeniería social o de registros públicos.
  2. Utiliza un gestor de contraseñas y su generador de contraseñas integrado con todas las clases de caracteres, de 25 caracteres o más. KeePass y BitWarden son dos buenas opciones.
  3. Nada es menos seguro que una clave privada sin contraseña. Si se ha saltado la introducción de la contraseña por accidente, vuelva atrás y genere un nuevo par de claves con una contraseña segura.

Claves SSH en Linux, Mac, MobaXterm y Windows Subsistema para Linux

Una vez que haya abierto un terminal, compruebe si existen claves SSH y nombres de archivo, ya que las claves SSH existentes se sobrescriben.

BASH

[you@laptop:~]$ ls ~/.ssh/

Si ~/.ssh/id_ed25519 ya existe, tendrá que especificar un nombre diferente para el nuevo par de claves.

Genera un nuevo par de claves pública-privada usando el siguiente comando, que producirá una clave más fuerte que la ssh-keygen por defecto invocando estas banderas:

  • -a (por defecto es 16): número de rondas de derivación de la frase de contraseña; aumentar para ralentizar los ataques de fuerza bruta.
  • -t (por defecto es rsa): especifica el “tipo” o algoritmo criptográfico. ed25519 especifica EdDSA con una clave de 256 bits; es más rápido que RSA con una fuerza comparable.
  • -f (por defecto es /home/usuario/.ssh/id_algorithm): nombre de archivo para almacenar tu clave privada. El nombre de archivo de la clave pública será idéntico, con una extensión .pub añadida.

BASH

[you@laptop:~]$ ssh-keygen -a 100 -f ~/.ssh/id_ed25519 -t ed25519

Cuando se le solicite, introduzca una contraseña segura teniendo en cuenta las consideraciones anteriores. Ten en cuenta que el terminal no parecerá cambiar mientras escribes la contraseña: esto es deliberado, por tu seguridad. Se le pedirá que la escriba de nuevo, así que no se preocupe demasiado por los errores tipográficos.

Echa un vistazo en ~/.ssh (utiliza ls ~/.ssh). Debería ver dos archivos nuevos:

  • su clave privada (~/.ssh/id_ed25519): *no la compartas con nadie
  • la clave pública compartible (~/.ssh/id_ed25519.pub): si un administrador del sistema te pide una clave, ésta es la que debes enviar. También es segura para subir a sitios web como GitHub: está pensada para ser vista.

Usar RSA para sistemas antiguos

Si la generación de claves falló porque ed25519 no está disponible, intenta usar el criptosistema más antiguo (pero aún fuerte y confiable) RSA. De nuevo, primero comprueba si existe una clave:

BASH

[you@laptop:~]$ ls ~/.ssh/

Si ~/.ssh/id_rsa ya existe, tendrás que especificar elegir un nombre diferente para el nuevo par de claves. Genérelo como arriba, con las siguientes banderas adicionales:

  • -b establece el número de bits de la clave. El valor predeterminado es 2048. EdDSA utiliza una longitud de clave fija, por lo que esta bandera no tendría ningún efecto.
  • -o (no por defecto): utiliza el formato de clave OpenSSH, en lugar de PEM.

BASH

[you@laptop:~]$ ssh-keygen -a 100 -b 4096 -f ~/.ssh/id_rsa -o -t rsa

Cuando se le solicite, introduzca una contraseña segura teniendo en cuenta las consideraciones anteriores.

Echa un vistazo en ~/.ssh (utiliza ls ~/.ssh). Debería ver dos archivos nuevos:

  • su clave privada (~/.ssh/id_rsa): *no la compartas con nadie
  • la clave pública compartible (~/.ssh/id_rsa.pub): si un administrador del sistema te pide una clave, ésta es la que debes enviar. También es segura para subir a sitios web como GitHub: está pensada para ser vista.

Claves SSH en PuTTY

Si utiliza PuTTY en Windows, descargue y utilice puttygen para generar el par de claves. Consulte la documentación de PuTTY para más detalles.

  • Selecciona EdDSA como tipo de clave.
  • Seleccione 255 como tamaño o fuerza de la clave.
  • Haz clic en el botón “Generar”.
  • No es necesario introducir un comentario.
  • Cuando se le solicite, introduzca una contraseña segura teniendo en cuenta las consideraciones anteriores.
  • Guarda las claves en una carpeta que ningún otro usuario del sistema pueda leer.

Echa un vistazo a la carpeta que has especificado. Debería ver dos archivos nuevos:

  • su clave privada (id_ed25519): *no la compartas con nadie
  • la clave pública compartible (id_ed25519.pub): si un administrador del sistema te pide una clave, ésta es la que debes enviar. También es segura para subir a sitios web como GitHub: está pensada para ser vista.

Agente SSH para facilitar el manejo de claves

Una clave SSH es tan fuerte como la contraseña utilizada para desbloquearla, pero por otro lado, escribir una contraseña compleja cada vez que te conectas a una máquina es tedioso y envejece muy rápido. Aquí es donde entra el Agente SSH.

Usando un Agente SSH, puede escribir su contraseña para la clave privada una vez, y luego hacer que el Agente la recuerde durante un número de horas o hasta que cierre la sesión. A menos que algún actor nefasto tenga acceso físico a su máquina, esto mantiene la contraseña segura, y elimina el tedio de introducir la contraseña varias veces.

Recuerda tu contraseña, porque una vez que caduque en el Agente, tendrás que escribirla de nuevo.

Agentes SSH en Linux, macOS y Windows

Abre tu aplicación de terminal y comprueba si se está ejecutando un agente:

BASH

[you@laptop:~]$ ssh-add -l
  • Si obtiene un error como el siguiente,

    ERROR

    Error connecting to agent: No such file or directory

    … entonces necesitas lanzar el agente como sigue:

    BASH

    [you@laptop:~]$ eval $(ssh-agent)

    ¿Qué hay en $(...)?

    La sintaxis de este comando de Agente SSH es inusual, basado en lo que hemos visto en la lección de UNIX Shell. Esto es porque el comando ssh-agent crea abre una conexión a la que sólo usted tiene acceso, e imprime una serie de comandos shell que pueden ser usados para alcanzarla – ¡pero no los ejecuta!

    BASH

    [you@laptop:~]$ ssh-agent

    SALIDA

    SSH_AUTH_SOCK=/tmp/ssh-Zvvga2Y8kQZN/agent.131521;
    export SSH_AUTH_SOCK;
    SSH_AGENT_PID=131522;
    export SSH_AGENT_PID;
    echo Agent pid 131522;

    El comando eval interpreta esta salida de texto como comandos y le permite acceder a la conexión del Agente SSH que acaba de crear.

    Puede ejecutar cada línea de la salida ssh-agent usted mismo y obtener el mismo resultado. El uso de eval facilita las cosas.

  • De lo contrario, su agente ya se está ejecutando: no se meta con él.

Añade tu clave al agente, con expiración de sesión después de 8 horas:

BASH

[you@laptop:~]$ ssh-add -t 8h ~/.ssh/id_ed25519

SALIDA

Enter passphrase for .ssh/id_ed25519:
Identity added: .ssh/id_ed25519
Lifetime set to 86400 seconds

Mientras dure (8 horas), siempre que utilices esa clave, el Agente SSH proporcionará la clave en tu nombre sin que tengas que teclear ni una sola tecla.

Agente SSH en PuTTY

Si utiliza PuTTY en Windows, descargue y utilice pageant como agente SSH. Consulte la documentación de PuTTY.

Transfiere tu clave pública

BASH

[you@laptop:~]$ scp ~/.ssh/id_ed25519.pub yourUsername@cluster.hpc-carpentry.org:~/

Entrar en el Cluster


Abre tu terminal o cliente gráfico SSH, e inicia sesión en el clúster. Sustituye yourUsername por tu nombre de usuario o el suministrado por los instructores.

BASH

[you@laptop:~]$ ssh yourUsername@cluster.hpc-carpentry.org

Es posible que se te pida la contraseña. Atención: los caracteres que escriba después de la solicitud de contraseña no se mostrarán en pantalla. La salida normal se reanudará cuando pulse Enter.

Puede que haya notado que el prompt cambió cuando se conectó al sistema remoto usando el terminal (si se conectó usando PuTTY esto no se aplicará porque no ofrece un terminal local). Este cambio es importante porque puede ayudarte a distinguir en qué sistema se ejecutarán los comandos que escribas cuando los pases a la terminal. Este cambio es también una pequeña complicación que tendremos que sortear a lo largo del taller. Exactamente lo que se muestra como prompt (que convencionalmente termina en $) en la terminal cuando está conectada al sistema local y al sistema remoto será típicamente diferente para cada usuario. Aún así, necesitamos indicar en qué sistema estamos introduciendo comandos, por lo que adoptaremos la siguiente convención:

  • [you@laptop:~]$ cuando el comando deba introducirse en un terminal conectado a su ordenador local
  • [yourUsername@login1 ~] cuando el comando deba introducirse en un terminal conectado al sistema remoto
  • $ cuando realmente no importa a qué sistema está conectado el terminal.

Echando un vistazo a tu home remoto


Muy a menudo, muchos usuarios se ven tentados a pensar que una instalación de computación de alto rendimiento es una máquina gigante y mágica. A veces, la gente asume que el ordenador en el que han iniciado sesión es todo el clúster de computación. Pero, ¿qué ocurre realmente? ¿En qué ordenador hemos iniciado sesión? El nombre del ordenador en el que hemos iniciado sesión se puede comprobar con el comando hostname. (¡También puedes notar que el nombre de host actual es también parte de nuestro prompt!)

BASH

[yourUsername@login1 ~] hostname

SALIDA

login1

Ya estamos en la máquina remota. A continuación, vamos a averiguar dónde estamos ejecutando pwd para printar el directorio de trabajo (print working directory).

BASH

[yourUsername@login1 ~] pwd

SALIDA

/home/yourUsername

¡Genial, ya sabemos dónde estamos! Veamos qué hay en nuestro directorio actual:

BASH

[yourUsername@login1 ~] ls

SALIDA

id_ed25519.pub

Es posible que los administradores del sistema hayan configurado tu directorio de inicio con algunos archivos, carpetas y enlaces (accesos directos) útiles al espacio reservado para ti en otros sistemas de archivos. Si no lo han hecho, tu directorio personal puede aparecer vacío. Para volver a comprobarlo, incluya los archivos ocultos en su listado de directorios:

BASH

[yourUsername@login1 ~] ls -a

SALIDA

  .            .bashrc           id_ed25519.pub
  ..           .ssh

En la primera columna, . es una referencia al directorio actual y .. una referencia a su padre (/home). Puede que veas o no los otros ficheros, o ficheros como ellos: .bashrc es un fichero de configuración del shell, que puedes editar con tus preferencias; y .ssh es un directorio que almacena claves SSH y un registro de conexiones autorizadas.

Instale su clave SSH

Puede haber una manera mejor

Las políticas y prácticas para el manejo de claves SSH varían entre clusters HPC: siga cualquier guía proporcionada por los administradores del cluster o la documentación. En particular, si existe un portal en línea para la gestión de claves SSH, utilícelo en lugar de las instrucciones descritas aquí.

Si transfirió su clave pública SSH con scp, debería ver id_ed25519.pub en su directorio personal. Para “instalar” esta clave, debe aparecer en un archivo llamado authorized_keys en la carpeta .ssh.

Si la carpeta .ssh no aparece en la lista anterior, es que aún no existe: créala.

BASH

[yourUsername@login1 ~] mkdir ~/.ssh

Ahora, utiliza cat para imprimir tu clave pública, pero redirige la salida, añadiéndola al archivo authorized_keys:

BASH

[yourUsername@login1 ~] cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys

¡Eso es todo! Desconéctese e intente conectarse de nuevo al remoto: si su clave y agente han sido configurados correctamente, no se le pedirá la contraseña de su clave SSH.

BASH

[yourUsername@login1 ~] logout

BASH

[you@laptop:~]$ ssh yourUsername@cluster.hpc-carpentry.org

Puntos Clave

  • Un sistema HPC es un conjunto de máquinas conectadas en red.
  • Los sistemas HPC suelen proporcionar nodos de inicio de sesión y un conjunto de nodos trabajadores.
  • Los recursos que se encuentran en los nodos independientes (trabajadores) pueden variar en volumen y tipo (cantidad de RAM, arquitectura del procesador, disponibilidad de sistemas de archivos montados en red, etc.).
  • Los archivos guardados en un nodo están disponibles en todos los nodos.