Conexión a PreTeXt: Cliente VS ↔ Servidor con PreTexT

🔧 Uso de una computadora (Cliente) conectada a otra (Servidor); con WSL y PreTeXt

Esta guía explica cómo configurar una conexión segura mediante SSH entre un Cliente usando Visual Studio Code (VS Code), y un Servidor con Windows 11 y Ubuntu WSL2, para editar y compilar proyectos PreTeXt desde el Cliente. Incluye la configuración de un entorno virtual Python en WSL llamado editorial, donde está instalado PreTeXt, asegurando que el sistema permanezca ordenado y reproducible.


🧭 Escenario de ejemplo

EquipoSistemaRolSoftware relevante
ClienteWindows 10 o 11Cliente SSHVS Code + Extensión Remote SSH
ServidorWindows 11 con WSL2 (Ubuntu)Servidor SSHPython + PreTeXt en entorno virtual editorial

Con esta configuración, el VS Code del Cliente (laptop) actúa como cliente remoto, mientras que el WSL del Servidor (desktop) ejecuta la compilación de PreTeXt dentro de su entorno virtual.


🧩 Paso 0. Activar el entorno virtual editorial en WSL

Dentro de Ubuntu (WSL), asegúrate de tener creado un entorno virtual donde instalaste PreTeXt.
Por ejemplo, si ya existe en tu home:

source ~/editorial/bin/activate

Si la activación fue correcta, el prompt del terminal mostrará algo así:

(editorial) rommel@Nagasaki:~$

Verifica que PreTeXt esté disponible:

pretext --version

Debería devolver una versión como 2.15.0 o superior.

💡 Hacer que el entorno se active automáticamente

Edita tu archivo ~/.bashrc y añade al final:

# Activar entorno virtual automáticamente
if [ -d "$HOME/editorial" ]; then
    source "$HOME/editorial/bin/activate"
fi

Guarda y cierra (Ctrl+O, Enter, Ctrl+X).
Cada vez que entres por SSH o VS Code, el entorno se activará automáticamente.


⚙️ Paso 1. Instalar y verificar SSH en WSL

En el Servidor, abre Ubuntu (WSL) y ejecuta:

sudo apt update
sudo apt install -y openssh-server
sudo service ssh start

Verifica el servicio:

sudo service ssh status

Debe aparecer active (running).


⚙️ Paso 2. Configurar el servidor SSH en WSL

Edita el archivo de configuración:

sudo nano /etc/ssh/sshd_config

Asegúrate de tener:

Port 22
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin no
UsePAM yes
ChallengeResponseAuthentication no
AllowTcpForwarding yes

Guarda y reinicia el servicio:

sudo service ssh restart

💡 Paso 3. Crear la carpeta .ssh y el archivo authorized_keys

En el WSL:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

Pega allí la clave pública del Cliente (la que está en C:\Users\<usuario>\.ssh\id_ed25519.pub).
Guarda y aplica permisos:

chmod 600 ~/.ssh/authorized_keys

💻 Paso 4. Generar clave SSH en el Cliente

En PowerShell del Cliente:

ssh-keygen -t ed25519 -C "Cliente-rommel"

Presiona ENTER en todas las preguntas.
Esto crea:

C:\Users\rommel\.ssh\id_ed25519
C:\Users\rommel\.ssh\id_ed25519.pub

🔗 Paso 5. Copiar la clave pública al servidor WSL

Usa este comando en PowerShell (ajusta IP según tu caso):

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh rommel@192.168.0.241 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Así, la m+aquina que actúa como Cliente podrá autenticarse por clave sin pedir contraseña.


⚙️ Paso 6. Configurar VS Code (Remote SSH)

  1. En el Cliente, abre VS Code.
  2. Instala la extensión Remote - SSH.
  3. En la paleta de comandos (Ctrl+Shift+P), ejecuta:
    Remote-SSH: Add New Host
    
    Y escribe:
    ssh rommel@192.168.0.241
    
  4. Guarda la configuración en el archivo:
    C:\Users\rommel\.ssh\config
    

Ejemplo de configuración:

Host nagasaki
    HostName 192.168.0.241
    User rommel
    IdentityFile C:\Users\rommel\.ssh\id_ed25519
    IdentitiesOnly yes

💡 Paso 7. Conectarse desde VS Code

Haz clic en el icono verde inferior izquierdo (><) →
Selecciona “Connect to Host → nagasaki”.

Si todo está correcto, VS Code abrirá una sesión remota en tu Ubuntu (WSL).
El terminal mostrará algo como:

(editorial) rommel@Nagasaki:~$

Ya estás dentro de tu entorno PreTeXt remoto.


🧱 Paso 8. Compilar y visualizar el libro

En el terminal remoto (dentro de VS Code):

cd ~/Libro_Generico_PreText
pretext build web
cd output/web
python3 -m http.server 8080

Desde el navegador del Cliente, abre:

http://192.168.0.241:8080/

✅ Podrás ver tu libro compilado desde el servidor WSL, dentro del entorno virtual editorial.


🧰 Paso 9. Automatizar el port forwarding (opcional)

WSL cambia de IP al reiniciar. Puedes crear un script PowerShell:

# wsl_port_forward.ps1
$WSL_IP = (wsl hostname -I).Trim()
netsh interface portproxy delete v4tov4 listenport=22
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=$WSL_IP
Write-Host "SSH port forwarded to WSL IP: $WSL_IP"

Guárdalo y ejecútalo al iniciar sesión en Windows.


✅ Resultado final

El Cliente se conecta por SSH al Servidor (WSL Ubuntu)
y ejecuta PreTeXt dentro del entorno virtual editorial, sin contraseñas ni instalaciones duplicadas.

Este esquema permite centralizar la potencia de cómputo y mantener tu entorno ordenado,
ideal para aulas, laboratorios o autores que usan equipos modestos.


Autor: Rommel J. Contreras
Versión: Octubre 2025
Licencia: CC BY-SA 4.0