Esta guía te ayuda a la configuracion del clúster Helix (nodo de login cicima-hpc) mediante la extensión SSH FS de visual code.
¿Por qué SSH FS y no Remote-SSH?
VS Code tiene dos formas de trabajar remoto:
| SSH FS (recomendado en Helix) | Remote-SSH (no recomendado) | |
|---|---|---|
| Dónde corre VS Code | En tu máquina local | Instala un servidor completo en el HPC |
| Uso de disco en el HPC | ~0 (solo lee archivos por SFTP) | 300 MB – 1 GB por usuario en $HOME |
| Proceso corriendo en el nodo de login | Ninguno | Un node residente mientras estés conectado |
| Terminal integrada | Local | Remota |
Los administradores de Helix piden usar SSH FS para no llenar el $HOME compartido con carpetas .vscode-server que crecen sin control. Esta guía sigue esa recomendación.
Prerrequisitos
Antes de empezar debes tener:
- VS Code instalado.
- Cuenta activa en el clúster Helix.
- Una llave SSH generada (típicamente en
~/.ssh/una_tavo_ed25519o similar). - La llave pública ya cargada en el servidor (
ssh-copy-ido pegada en~/.ssh/authorized_keysdel HPC). - Preferiblemente
keychaininstalado y configurado para no tipear passphrase en cada conexión.
Paso 1 — Verificar que SSH funciona desde terminal
Antes de configurar VS Code, confirma que puedes entrar al clúster desde la línea de comandos. Si esto no funciona, tampoco va a funcionar en VS Code.
Abre una terminal y ejecuta:
bash
ssh hpc
Si tienes el alias configurado en ~/.ssh/config, esto debería entrar directo sin pedir contraseña.
Si no tienes el alias, prueba con usuario + IP directo:
ssh gustavo.matamoros.gonzalez@10.10.132.5
Paso 2 — Configurar ~/.ssh/config con un alias corto
Para no repetir usuario + host + llave en cada comando, define un alias en tu configuración SSH local.
Abre (o crea) el archivo:
nano ~/.ssh/config
Agrega el siguiente bloque:
Ajusta:
- La IP en
HostName(ssh hpc «hostname -I») - Tu usuario en
User. - El path de tu llave privada en
IdentityFile.
Host hpc
HostName 10.10.132.5
User gustavo.matamoros.gonzalez
IdentityFile ~/.ssh/una_tavo_ed25519
IdentitiesOnly yes
ServerAliveInterval 60
ServerAliveCountMax 3
Importante — mantén el nombre cicima-hpc. Los archivos tasks.json que crearemos después referencian ese nombre exacto. Si le pones otro, tendrás que cambiarlo en cada tarea.
Ajusta los permisos:
chmod 600 ~/.ssh/config
Prueba con el alias:
ssh hpc
Si entra directo, estás listo para instalar la extensión.
Paso 3 — Instalar la extensión SSH FS
- Abre VS Code.
- Pulsa
Ctrl+Shift+Xpara abrir el panel de extensiones. - En el buscador, escribe: SSH FS
- Instala la que dice «SSH FS» de Kelvin Schoofs (ID:
Kelvin.vscode-sshfs). - Espera a que termine la instalación. No necesitas reiniciar VS Code.

Al instalar, aparece un ícono nuevo en la barra lateral izquierda: parece un servidor con un enchufe. Ese es el panel de SSH FS.

Paso 4 — Crear la configuración de conexión en SSH FS
- Click en el ícono de SSH FS en la barra lateral izquierda. Si no lo ves, presiona
Ctrl+Shift+Py busca «SSH FS: Focus on Configurations View».

- Verás una sección CONFIGURATIONS con un botón
+(Add configuration). Click en el+.

- Se abre un editor con el nombre de la configuración.
- Name:
hpc(⚠️ Importante: este nombre lo usarán después las tareas deltasks.json. lige uno corto y recuérdalo. En esta guía usamoshpc. Solo permite: minúsculas, números,_.+-.) - Location «Global settings.json» (para que la config esté disponible en cualquier ventana de VS Code).
- Name:

4.2 — Editar los detalles de la conexión
Al guardar, se abre un formulario grande con muchos campos. Rellena los siguientes:
Sección superior:
- Name:
hpc - Label:
HPC Helix - Group, Merge, Extend, PuTTY: déjalos vacíos/default.
- Host:
10.10.132.5(⚠️ NO pongas aquí el alias hpc. SSH FS no siempre resuelve alias del ~/.ssh/config como bash lo hace. Si pones hpc, obtienes error getaddrinfo ENOTFOUND hpc. Usa el hostname o IP real.)


- Private key (Path):
~/.ssh/una_tavo_ed25519

- Agent: si usas keychain o ssh-agent, activa esta casilla y puedes dejar el private key vacío.

- Root

Paso 5 — Conectar al servidor
Hay dos formas equivalentes:
Forma 1 — Desde el panel de SSH FS:
- Click derecho sobre
hpcen la lista. - Elige «Add as Workspace folder».

Forma 2 — Con la paleta de comandos:
Ctrl+Shift+P→ escribe: SSH FS: Add as Workspace folder- Elige
cicima-hpcde la lista.

VS Code te va a preguntar si confías en el workspace. Elige «Yes, I trust the authors».
En unos segundos deberías ver tu carpeta home del HPC aparecer en el explorador de VS Code, como si fuera una carpeta local. Puedes navegar, abrir archivos, editar, guardar, y todo va directo al servidor por SFTP.

Verificación rápida:
- Abre cualquier archivo del HPC.
- Cambia una línea, guarda (
Ctrl+S). - Vuelve a abrirlo desde una terminal SSH (
cat archivo) y confirma que el cambio se guardó.
Paso 6 — Crear la configuración .vscode/ con las tareas
Para poder compilar y ejecutar código remotamente sin salir de VS Code, creamos dos archivos de configuración dentro de una carpeta .vscode en la raíz del workspace remoto.
6.1 — Crear la carpeta
En el explorador de VS Code:
- Click derecho sobre la raíz del workspace remoto.
- Elige «New Folder» → nombre:
.vscode


6.2 — Crear c_cpp_properties.json
Este archivo le dice a IntelliSense dónde encontrar los compiladores y headers de MPI en el clúster.
Dentro de .vscode/, crea un archivo llamado c_cpp_properties.json con este contenido:
{
"configurations": [
{
"name": "HPC OpenMPI",
"compilerPath": "/opt/openmpi/4.0.4_gnu/bin/mpicxx",
"includePath": [
"${workspaceFolder}/**"
],
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}

6.3 — Crear tasks.json
Este archivo define las tareas de compilación y ejecución. Incluye tareas para C/C++ (MPI, OpenMP) y para Python + Slurm.
Dentro de .vscode/, crea un archivo llamado tasks.json con este contenido:
{
"version": "2.0.0",
"tasks": [
{
"label": "Compilar OpenMPI",
"type": "ssh-shell",
"host": "hpc",
"command": "/opt/openmpi/4.0.4_gnu/bin/mpicxx \"${remoteFile}\" -o \"${remoteFileDirname}/${remoteFileBasenameNoExtension}\"",
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$gcc"]
},
{
"label": "Compilar OpenMP",
"type": "ssh-shell",
"host": "hpc",
"command": "/usr/bin/g++ \"${remoteFile}\" -o \"${remoteFileDirname}/${remoteFileBasenameNoExtension}\" -fopenmp",
"group": "build",
"problemMatcher": ["$gcc"]
},
{
"label": "Ejecutar OpenMPI con Slurm",
"type": "ssh-shell",
"host": "hpc",
"command": "cd \"${remoteFileDirname}\" && srun --partition=debug --ntasks=4 /opt/openmpi/4.0.4_gnu/bin/mpirun -np 4 \"./${remoteFileBasenameNoExtension}\"",
"problemMatcher": []
},
{
"label": "Ejecutar OpenMP con Slurm",
"type": "ssh-shell",
"host": "hpc",
"command": "cd \"${remoteFileDirname}\" && OMP_NUM_THREADS=4 srun --partition=debug --ntasks=1 --cpus-per-task=4 \"./${remoteFileBasenameNoExtension}\"",
"problemMatcher": []
},
{
"label": "Ejecutar Python con Slurm",
"type": "ssh-shell",
"host": "hpc",
"command": "cd \"${remoteFileDirname}\" && module load Anaconda && srun --partition=debug --ntasks=1 --cpus-per-task=1 python \"${remoteFile}\"",
"problemMatcher": []
},
{
"label": "Enviar sbatch",
"type": "ssh-shell",
"host": "hpc",
"command": "cd \"${remoteFileDirname}\" && sbatch \"${remoteFile}\"",
"problemMatcher": []
},
{
"label": "Ver mi cola (squeue)",
"type": "ssh-shell",
"host": "hpc",
"command": "squeue -u $USER",
"problemMatcher": []
},
{
"label": "Últimos jobs de hoy (sacct)",
"type": "ssh-shell",
"host": "hpc",
"command": "sacct -u $USER --starttime=today -o JobID,JobName,State,Elapsed,MaxRSS,NodeList",
"problemMatcher": []
}
]
}
Guarda con Ctrl+S.
