Guía Completa para Configurar un Entorno de Desarrollo SSH con VirtualBox + Ubuntu Server 24.04
A partir de 2025, usar la función Remote SSH de VSCode se ha convertido en la mejor práctica al construir un entorno de desarrollo con VirtualBox. Este artículo proporciona instrucciones detalladas para que incluso los principiantes puedan configurar su entorno de manera confiable.
Introducción: Por Qué es Necesaria la Conexión SSH
Cuando instalas Ubuntu Server en VirtualBox, por defecto trabajarás con una pantalla de consola negra. Este entorno tiene varias limitaciones:
- Sin funcionalidad de copiar y pegar
- Desplazamiento de pantalla incómodo
- Entrada de caracteres especiales difícil
- Edición de archivos ineficiente
Al configurar la conexión SSH, puedes operar cómodamente desde tu terminal familiar o VSCode.
Software y Versiones Requeridos
- VirtualBox: 7.2.2 o posterior (última versión a enero de 2025)
- Ubuntu Server: 24.04 LTS (con soporte hasta abril de 2029)
- Windows Terminal o Tera Term (Windows)
- Visual Studio Code + extensión Remote SSH (recomendado)
Paso 1: Descargar Ubuntu Server 24.04
- Visita el sitio web oficial de Ubuntu
- Descarga Ubuntu Server 24.04 LTS (aproximadamente 3GB)
- Recuerda dónde guardaste el archivo ISO
Paso 2: Crear una Máquina Virtual en VirtualBox
Creación de la Máquina Virtual
- Inicia VirtualBox y haz clic en el botón “Nueva”
- Crea una máquina virtual con la siguiente configuración:
- Nombre: Ubuntu Server 24.04 (o cualquier nombre que prefieras)
- Tipo: Linux
- Versión: Ubuntu (64-bit)
- Tamaño de memoria: 2048MB o más (4096MB recomendado)
- Disco duro: Crear nuevo (formato VDI, asignación dinámica, 20GB o más)
Configuración del Archivo ISO
- Selecciona la máquina virtual creada y haz clic en “Configuración”
- Selecciona “Almacenamiento”
- Haz clic en el icono de disco vacío bajo “Controlador: IDE”
- Desde el icono de disco a la derecha, selecciona “Seleccionar archivo de disco”
- Selecciona el archivo ISO de Ubuntu Server 24.04 descargado
Paso 3: Instalar Ubuntu Server
Inicio de la Instalación
- Inicia la máquina virtual
- Selecciona “English” para el idioma (no se recomienda otros idiomas para la versión servidor)
- Selecciona tu distribución de teclado
- Deja la configuración de red por defecto y haz clic en “Done”
- Deja la configuración de proxy en blanco y haz clic en “Done”
- Deja el servidor espejo por defecto y haz clic en “Done”
Configuración de Almacenamiento
- Selecciona “Use an entire disk”
- Revisa la configuración de particiones y haz clic en “Done”
- Haz clic en “Continue” para confirmar
Configuración de Cuenta (Importante)
- Ingresa la siguiente información:
- Your name: Tu nombre (ej., Juan Pérez)
- Your server’s name: Nombre del servidor (ej., ubuntu-server)
- Pick a username: Nombre de usuario (ej., juan) *solo minúsculas
- Choose a password: Establece una contraseña fuerte
- Confirm your password: Vuelve a ingresar la contraseña
Instalación del Servidor SSH (Importante)
- Marca “Install OpenSSH server”
- Haz clic en “Done”
- No selecciones nada en Featured Server Snaps y haz clic en “Done”
Una vez completada la instalación, selecciona “Reboot Now”.
Paso 4: Primer Inicio y Confirmación de Dirección IP
Iniciar Sesión en la Máquina Virtual
- Después del reinicio, inicia sesión con tu nombre de usuario y contraseña
- Verifica la dirección IP con el siguiente comando:
ip addr show
O bien:
hostname -I
Típicamente, se mostrará una dirección IP como 10.0.2.15. Esta es la dirección de la red interna NAT de VirtualBox.
Verificar el Estado del Servidor SSH
sudo systemctl status ssh
Confirma que muestre “active (running)”. Si no está ejecutándose:
sudo systemctl start ssh
sudo systemctl enable ssh
Configuración del Firewall
UFW está deshabilitado por defecto en Ubuntu 24.04, pero verifica para estar seguro:
sudo ufw status
Si muestra “Status: inactive”, no hay problema. Si está habilitado:
sudo ufw allow ssh
sudo ufw allow 22/tcp
Paso 5: Configurar el Reenvío de Puertos en VirtualBox
Esta es la configuración más crítica. Permíteme explicar en detalle.
¿Qué es el Reenvío de Puertos?
En el modo NAT de VirtualBox, la máquina virtual existe dentro de su propia red privada (10.0.2.0/24). No puede ser accedida directamente desde el exterior (la máquina anfitriona). Al configurar el reenvío de puertos, puedes redirigir el acceso a un puerto específico en la máquina anfitriona hacia la máquina virtual.
Pasos de Configuración
- Apaga la máquina virtual:
sudo shutdown -h now - En VirtualBox Manager, selecciona la máquina virtual y haz clic en “Configuración”
- Selecciona “Red” → “Adaptador 1”
- Haz clic en “Avanzado” para mostrar la configuración detallada
- Haz clic en el botón “Reenvío de puertos”
- Haz clic en el icono “+” para agregar una nueva regla
- Ingresa la siguiente configuración:
- Nombre: SSH (cualquier nombre que prefieras)
- Protocolo: TCP
- IP anfitrión: 127.0.0.1 (o dejar en blanco)
- Puerto anfitrión: 2222 (cualquier número 1024 o superior)
- IP invitado: 10.0.2.15 (IP de la máquina virtual)
- Puerto invitado: 22
- Haz clic en “Aceptar” para guardar la configuración
Paso 6: Probar la Conexión SSH
Para Windows
Usando Windows Terminal / PowerShell:
ssh -p 2222 usuario@127.0.0.1
Ejemplo:
ssh -p 2222 juan@127.0.0.1
Usando Tera Term:
- Inicia Tera Term
- Ingresa lo siguiente:
- Host: 127.0.0.1
- Puerto TCP: 2222
- Haz clic en “Aceptar”
- Ingresa nombre de usuario y contraseña
Para macOS / Linux
ssh -p 2222 usuario@127.0.0.1
Notas sobre la Conexión
En la primera conexión, verás este mensaje:
The authenticity of host '[127.0.0.1]:2222' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxx
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Escribe “yes” y presiona Enter.
Paso 7: Conectar con VSCode Remote SSH (Recomendado)
Usar la extensión Remote SSH de VSCode proporciona un entorno cómodo como si estuvieras desarrollando localmente.
Instalar la Extensión Remote SSH
- Inicia VSCode
- Haz clic en el icono de extensiones a la izquierda (o Ctrl+Shift+X)
- Busca “Remote – SSH”
- Instala “Remote – SSH” proporcionado por Microsoft
Crear Archivo de Configuración SSH
- Abre la paleta de comandos en VSCode (Ctrl+Shift+P o F1)
- Selecciona “Remote-SSH: Open SSH Configuration File”
- Selecciona
~/.ssh/config(Para Windows:C:\Users\usuario\.ssh\config) - Agrega la siguiente configuración:
Host ubuntu-server
HostName 127.0.0.1
Port 2222
User usuario
Ejemplo:
Host ubuntu-server
HostName 127.0.0.1
Port 2222
User juan
- Guarda el archivo
Conectar desde VSCode
- Abre la paleta de comandos (Ctrl+Shift+P)
- Selecciona “Remote-SSH: Connect to Host”
- Selecciona “ubuntu-server”
- Se abre una nueva ventana, ingresa tu contraseña
- Cuando se conecte exitosamente, aparecerá “SSH: ubuntu-server” en la esquina inferior izquierda
Configurar el Entorno de Desarrollo en VSCode
Después de conectar, las siguientes operaciones se vuelven posibles:
- Edición de archivos (con resaltado de sintaxis)
- Uso de terminal integrado
- Operaciones Git
- Instalación remota de extensiones
- Ejecución de depuración
Paso 8: Configurar Autenticación por Clave SSH (Mejora de Seguridad)
Configura la autenticación por clave SSH, que es más segura que la autenticación por contraseña.
Generar Claves en Windows (PowerShell)
ssh-keygen -t ed25519 -C "tu-email@example.com"
Copiar la Clave Pública a la Máquina Virtual
Método 1: Copia Manual
Muestra el contenido de la clave pública:
cat ~/.ssh/id_ed25519.pubConéctate por SSH y ejecuta lo siguiente en la máquina virtual:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "pega el contenido de la clave pública aquí" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysMétodo 2: Usar ssh-copy-id (vía WSL)
ssh-copy-id -p 2222 usuario@127.0.0.1
Actualizar la Configuración de VSCode
Agrega lo siguiente a ~/.ssh/config:
Host ubuntu-server
HostName 127.0.0.1
Port 2222
User usuario
IdentityFile ~/.ssh/id_ed25519
Paso 9: Iniciar en Modo sin Interfaz Gráfica (Uso Conveniente)
Puedes iniciar la máquina virtual en segundo plano sin mostrar la ventana GUI.
Iniciar desde Línea de Comandos
VBoxManage startvm "Ubuntu Server 24.04" --type headless
Detener
VBoxManage controlvm "Ubuntu Server 24.04" poweroff
O conéctate vía SSH y ejecuta:
sudo shutdown -h now
Solución de Problemas
Problema 1: No se Puede Conectar por SSH
Causas y Soluciones:
- El servidor SSH no está ejecutándose
sudo systemctl start sshsudo systemctl enable ssh - La configuración de reenvío de puertos es incorrecta
- Verifica que la IP del invitado sea correcta (usualmente 10.0.2.15)
- Verifica que el puerto anfitrión no esté ya en uso
- Firewall de Windows Defender
- Permite la comunicación de VirtualBox
Problema 2: Error de Conexión en VSCode
Soluciones:
- Limpia el archivo known_hosts:
Remove-Item ~/.ssh/known_hosts - Verifica la sintaxis del archivo de configuración SSH
Problema 3: La Máquina Virtual es Lenta
Soluciones:
- Aumenta la memoria (4GB o más recomendado)
- Aumenta el número de núcleos de CPU (Configuración → Sistema → Procesador)
- Habilita el soporte de virtualización (VT-x/AMD-V en configuración BIOS)
Opciones de Configuración de Red
NAT + Reenvío de Puertos (Método de Este Artículo)
Ventajas:
- Configuración simple
- Alta seguridad
- Accesible solo desde la máquina anfitriona
Desventajas:
- No puede ser accedido desde otras PCs en la LAN
Adaptador Puente
Ventajas:
- Accesible desde cualquier lugar en la LAN
- Puede ser tratado como una máquina real
Desventajas:
- Requiere un router
- Consume una dirección IP separada
Adaptador Solo-Anfitrión + NAT (Dos Adaptadores)
Ventajas:
- Combina conexión a internet y conexión al anfitrión
- Configuración más flexible
Desventajas:
- Configuración ligeramente compleja
Resumen
La combinación de VirtualBox + Ubuntu Server 24.04 + VSCode Remote SSH es uno de los entornos de desarrollo más eficientes a partir de 2025. Siguiendo los pasos de este artículo, incluso los principiantes pueden configurar su entorno de manera confiable.
La función Remote SSH de VSCode es particularmente innovadora, permitiendo desarrollar dentro de una máquina virtual con la misma sensación que el desarrollo local. Esto permite una experiencia de desarrollo unificada en entornos Windows, macOS y Linux.
Dado que la conexión SSH es fundamental también en entornos en la nube (AWS, Azure, GCP), la experiencia de configurar este entorno será valiosa en el futuro.
El Siguiente Artículo Fue Publicado en 2021 y Se Conserva Aquí para Estudiar el Proceso de Evolución
Instalé Ubuntu Minimal usando VirtualBox, pero operarlo era difícil porque mostraba una pantalla de consola negra en lugar de una interfaz de escritorio. Así que decidí conectarme a esta máquina virtual usando Tera Term. Dado que este tipo de entorno es abrumadoramente común en la nube, recomiendo que todos construyan un entorno con fines de aprendizaje.
Procedamos. Quiero hacer una conexión SSH, así que verificaré si el software apropiado está instalado.
sudo systemctl status sshd
No está instalado, así que lo instalaré.
sudo apt install ssh
También verificaré el estado de apertura de puertos del firewall. Mostró “inactive”, lo que significa que aunque está instalado, no se está ejecutando, por lo que entiendo que las conexiones no serán rechazadas.
sudo ufw status
A continuación, necesito configurar VirtualBox en sí, así que apagaré el sistema operativo. Antes de apagar, tomaré nota de la dirección IP de esta máquina virtual.
Haz clic en Configuración en VirtualBox. Selecciona Red, luego haz clic en “Avanzado” en la pestaña Adaptador para mostrar los detalles.

Usaré el reenvío de puertos disponible aquí. Un puerto configurado con reenvío de puertos funciona como una puerta de enlace para el puerto de dirección asignado, y todos los paquetes enviados y recibidos externamente se transfieren automáticamente, haciendo posible la conexión SSH a la máquina virtual.
Crearé una nueva regla. El nombre puede ser arbitrario, e ingresaré la dirección IP de la PC que estoy operando en IP Anfitrión. Puedes encontrar la dirección IP ingresando el siguiente comando en el Símbolo del sistema:
ipconfig
Establecí el Puerto Anfitrión en 5050. Ingresa la dirección IP de la máquina virtual en IP Invitado, e ingresa 22 en Puerto Invitado.

Ahora las direcciones IP de la PC operadora y la máquina virtual de VirtualBox pueden enviar y recibir. Iniciaré la máquina virtual. En este momento, si aparece una advertencia de Windows Defender, permite el acceso.

Verificaré en el Símbolo del sistema si el envío y recepción es realmente posible.
telnet 192.168.26.105 5050
Apareció la pantalla de OpenSSH y se confirmó la conexión.

Abre Tera Term e ingresa el Host y Puerto TCP como sigue:
Host: user@192.168.26.105 Puerto TCP: 5050

Cuando presionas el botón Aceptar, aparece una pantalla de autenticación, así que inicia sesión ingresando el nombre de usuario y contraseña de la máquina virtual Ubuntu.

Ya que estamos en esto, probemos también conectarnos con claves de autenticación. Crearé un directorio en la máquina virtual que se necesitará más adelante. Crearé un directorio llamado .ssh en el directorio home y otorgaré los permisos de acceso apropiados.
mkdir .ssh
# Cambiar permisos del directorio a 700 (solo el propietario puede leer, escribir, ejecutar)
chmod 700 .ssh
Ahora, haz clic en “Generación de Clave SSH” en la pestaña Configuración de Tera Term. Presiona “Generar” para guardar las claves pública y privada.

La clave pública tiene una extensión .pub, y transferiré esta a la máquina virtual. La transferencia también es posible usando la funcionalidad de Tera Term. SSH SCP en la pestaña Archivo hace esto. En la sección “From” en la parte superior, cargaré la clave pública con extensión .pub que acaba de ser generada. Dejé la sección “To” en blanco. Cuando está en blanco, el archivo se transfiere al directorio actual.

Copiaré el archivo .pub al directorio .ssh que creé anteriormente con un nombre de archivo diferente. También estableceré los permisos apropiados para el archivo creado.
# Copiar la clave pública al directorio .ssh como un archivo llamado authorized_keys
cat id_rsa.pub >> .ssh/authorized_keys
# Cambiar permisos del archivo authorized_keys a 600 (solo el propietario puede leer y escribir)
chmod 600 .ssh/authorized_keys
# Eliminar la clave pública transferida ya que ya no es necesaria
rm id_rsa.pub
Al conectar con Tera Term, ahora usaré conexión basada en clave. Seleccionaré la clave privada y me conectaré.


