Programación remota a través de SSH con Visual Studio Code

vscode-800x450.png
Solucionex
13
Jul 20

Aunque lo más habitual y cómodo suele ser programar en un proyecto presente en nuestro equipo (que no debemos dejar de respaldar en la nube para evitar pérdidas), ocasionalmente puede ser más rápido trabajar directamente sobre el código presente en un servidor remoto.

Por ejemplo, si existe un entorno de pruebas actualizado de un proyecto voluminoso, y dicho proyecto está correctamente sincronizado con un repositorio, una modificación de apenas unos minutos puede transformarse en una tarea varias veces más larga si tenemos que descargarlo y desplegarlo. Incluso puede darse el caso de que en nuestro equipo el rendimiento del proyecto sea peor cuando es muy voluminoso o acarrea el uso de entornos virtualizados.

Una forma muy sencilla de utilizar un proyecto remoto mediante Visual Studio Code es instalando la extensión Remote - SSH, extensión oficial de Microsoft del grupo de plugins "Visual Studio Code Remote Development". 

Una vez instalada la extensión, sólo tenemos que abrir la paleta de comandos de VSCode (pulsando F1), y al escribir "remote-ssh" aparecerán los distintos comandos para controlar la extensión. Utilizando la opción "Add New SSH Host", se desplegará una caja donde escribir el comando de conexión SSH tal y como lo haríamos desde la consola, además de que aparecerá un placeholder de ejemplo:

Conexión SSH VSCode

 

Una vez introducido, VSCode nos preguntará en qué archivo añadirá la configuración de la conexión SSH. Podéis utilizar el archivo propuesto por defecto, y al pulsar OK se mostrará un popup confirmando la adición del destino SSH. 

Volvemos a abrir la paleta de comandos (F1) y aparecerán los hosts SSH configurados. Al clicar en uno, se abrirá una nueva ventana vacía, en cuya esquina inferior izquierda se nos confirma que esta ventana trabaja sobre el destino SSH, por ejemplo:

Conectado por SSH VSCode

 

Cuando pulsemos en "File" - "Open", estaremos navegando por los directorios del servidor remoto. Una vez localizado nuestro proyecto, pulsamos "Ok" y ya estaremos editándolo de forma transparente tal y como si fuese un proyecto local.

Esta es una de las formas más rápidas y sencillas de editar en un entorno remoto, pero cuando un proyecto es lo suficientemente grande, un popup nos advertirá de que con la configuración actual VSCode es incapaz de vigilar los cambios en el espacio de trabajo (Unable to watch for file changes in this large workspace). Esto puede ser problemático si hay otra persona realizando cambios en el mismo proyecto, puesto que sus cambios no aparecerán en los archivos que tengamos abiertos hasta que pulsemos manualmente en actualizar.

Podemos comprobar cuántos archivos permite el servidor que se sincronicen lanzando el comando siguiente:
 

cat /proc/sys/fs/inotify/max_user_watches

 

Por defecto, la cantidad será de 8192 ficheros, y podemos ampliarla hasta los 524288 archivos, pero debes tener en cuenta que esto aumenta el consumo de memoria. Para ampliarla, edita /etc/sysctl.conf y añade esta línea al final con la cantidad máxima de archivos a vigilar:

fs.inotify.max_user_watches=8192

También podemos minimizar la cantidad de archivos vigilados con la opción de configuración "Watcher Exclude". Abrimos File/Code - Preferences - Settings para abrir los ajustes de VSCode, y en la barra de búsqueda escribimos "watch". Aparecerá rápidamente:

Configuración Remote SSH VSCode

 

Por defecto ya se excluyen los directorios que se correspondan con esas tres patrones, pero podemos añadir más con el botón "Add Pattern", por ejemplo para evitar sincronizar archivos que muy probablemente no utilizaremos, como los files, los módulos contribuidos o incluso el core de Drupal.