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.
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:
- 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.
- 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.
- 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.
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.
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:
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.
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:
-
Si obtiene un error como el siguiente,
ERROR
Error connecting to agent: No such file or directory
… entonces necesitas lanzar el agente como sigue:
¿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!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 deeval
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:
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.
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.
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!)
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).
SALIDA
/home/yourUsername
¡Genial, ya sabemos dónde estamos! Veamos qué hay en nuestro directorio actual:
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:
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.
Ahora, utiliza cat
para imprimir tu clave pública, pero
redirige la salida, añadiéndola al archivo
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.
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.