¿Cómo ejecutar comandos de inicialización después de SSH en VS Code Remote?
Problema
Estoy tratando de conectarme al clúster informático de mi escuela (también conocido como un servidor Linux con “nodo de inicio de sesión” y “nodo de cómputo”) utilizando Remote SSH de VS Code, pero no puedo averiguar cómo ejecutar un comando después de hacer SSH.
Objetivo
Simplemente quiero ver código Python y probar algunas líneas pequeñas en un cuaderno Jupyter .ipynb en el entorno de la plataforma de cómputo.
Descripción
Básicamente, normalmente en la línea de comandos (o mobaXterm en una máquina Windows) de mi máquina local, primero inicio sesión en el nodo de inicio de sesión de la plataforma de cómputo con ssh -Y -L PUERTO:127.0.0.1:PUERTO usuario@ip_del_clúster_de_cómputo
, y luego ejecuto srun -t 0-12:00 --pty -p gpu --gres=gpu:1 --x11 --tunnel PUERTO:PUERTO /bin/bash
para iniciar sesión en el nodo de cómputo de forma interactiva (el comando mostrado permite el reenvío de puertos). El problema es que en VS Code solo puedo conectarme al nodo de inicio de sesión, pero después de eso no hay forma de ejecutar otro comando e iniciar sesión en el nodo de cómputo. La razón por la que necesito llegar al nodo de cómputo es porque quiero probar algo con un archivo .ipynb de forma interactiva en VS Code mientras leo el código, y el nodo de inicio de sesión no me permite realizar cálculos.
Tentativas fallidas
He estado intentando con Code-Server
, pero no es compatible con .ipynb (me sigue pidiendo que instale jupyter notebook
aunque ya lo tengo instalado en mi entorno conda), posiblemente porque reconoce por defecto el intérprete de Python del clúster HPC que no puedo modificar (ni siquiera puedo seleccionar el kernel de Jupyter en code-server). También intenté usar Jupyter Notebook directamente (abrir Jupyter con reenvío de puertos después de llegar al nodo de cómputo), pero leer código en él es mucho más incómodo.
Agradecería enormemente sus sugerencias.
davy.ai
Solución
Para conectarse al nodo informático desde el nodo de inicio usando Remote SSH de VS Code, puedes seguir estos pasos:
Abre el Panel de Comandos y selecciona “Remote-SSH: Connect to Host…”
Ingresa el comando SSH para conectarte al nodo de inicio, utilizando el formato
ssh nombreusuario@ip.nodo.inicio
.Una vez conectado, abre una nueva terminal en VS Code seleccionando Terminal > New Terminal.
En la nueva terminal, ejecuta el comando para conectarte al nodo informático, utilizando el formato
ssh -Y -L PUERTO:127.0.0.1:PUERTO nombreusuario@ip.nodo.informatico
. Este comando redirigirá el puerto a tu máquina local, permitiéndote utilizar Jupyter Notebook en el entorno informático.Ingresa tu contraseña si se te solicita.
Una vez conectado al nodo informático, ejecuta el comando para iniciar Jupyter Notebook, utilizando el formato
jupyter notebook --no-browser --port=PUERTO
.En una nueva terminal en VS Code, ejecuta el comando para redirigir el puerto de Jupyter Notebook a tu máquina local, utilizando el formato
ssh -N -f -L localhost:PUERTO_LOCAL:localhost:PUERTO nombreusuario@ip.nodo.informatico
. Reemplaza PUERTO_LOCAL con el número de puerto que deseas utilizar localmente, y PUERTO con el número de puerto utilizado por Jupyter Notebook en el nodo informático.Abre un navegador web e ingresa la URL `http://localhost:PUERTO_LOCAL` para acceder a Jupyter Notebook en el entorno informático.
Ahora puedes ver y editar código Python en Jupyter Notebook, y probar pequeñas líneas de código de forma interactiva. Cuando hayas terminado, simplemente cierra el navegador y finaliza las conexiones SSH en las terminales.
Ten en cuenta que es posible que necesites instalar paquetes adicionales o configurar un entorno conda en el entorno informático para utilizar Jupyter Notebook con tu intérprete Python y kernel preferidos.