# Cómo Conectarse a Su Base de Datos a Través de un Túnel SSH

Source: https://support.kapsulehost.com/es-es/database-ssh-tunnel

Su base de datos solo escucha en la dirección de bucle local del servidor, por lo que una herramienta de escritorio como TablePlus, Sequel Ace, DBeaver o MySQL Workbench no puede conectarse a ella directamente. Un túnel SSH le da a esas herramientas un puerto local que se reenvía a la base de datos, que es la forma de obtener una interfaz gráfica adecuada sobre sus datos sin exponer MySQL a internet.

## Por Qué Se Necesita un Túnel

Abra **Sitios web**, haga clic en el sitio y luego en **Base de datos**. La tarjeta de **Detalles de conexión** muestra el host como `127.0.0.1` y el puerto como `3306`. Eso no es un marcador de posición: la base de datos realmente solo acepta conexiones desde la máquina en la que se ejecuta. Nada en internet público puede alcanzar el puerto 3306, lo que elimina toda una categoría de ataques.

Un túnel SSH cierra esa brecha de forma segura. Su cliente SSH abre un puerto en su portátil, cifra todo lo que le envía y lo entrega a la base de datos desde dentro del servidor, exactamente como si un proceso local se hubiera conectado.

![Pestaña de base de datos mostrando los detalles de conexión en KPanel](https://support.kapsulehost.com/help/screenshots/database-ssh-tunnel.84df4ba6.webp)

## Lo Que Necesita Primero

> **Note:** Un túnel es una conexión SSH, por lo que necesita una clave SSH registrada en el sitio antes de que nada de esto funcione. Siga primero [Agregar claves SSH a un sitio](https://support.kapsulehost.com/es-es/adding-ssh-keys) y luego vuelva aquí.

Reúna cuatro cosas:

- **Host, puerto y nombre de usuario SSH**, desde **Configuración** y luego **Claves SSH**, en la tarjeta de **Detalles de conexión**.
- **Nombre de la base de datos, usuario y contraseña**, desde **Base de datos**. Haga clic en el icono del ojo para revelar la contraseña y en el icono de copiar para ponerla en su portapapeles.

Si la pestaña Base de datos muestra **No database provisioned for this site type**, este sitio no tiene una. Los sitios estáticos y algunos sitios Node.js se crean sin base de datos.

## Abrir el Túnel Desde una Terminal

La forma general es: reenviar un puerto local a `127.0.0.1:3306` en el extremo lejano de la conexión SSH.

```sh
ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
```

- `-L 3307:127.0.0.1:3306` abre el puerto 3307 en su máquina y lo reenvía al puerto 3306 en la interfaz de bucle local del servidor.
- `-N` indica que no se debe ejecutar una shell, solo mantener el túnel abierto.
- Agregue `-i /path/to/key` si la clave de este sitio no es la predeterminada.

Deje esa ventana de terminal en ejecución. Mientras esté abierta, `127.0.0.1:3307` en su portátil es la base de datos del sitio.

> **Tip:** Use el 3307 localmente en lugar del 3306. Si tiene MySQL o MariaDB instalado en su propia máquina, este ya está usando el puerto 3306, y el túnel no podrá vincularse, dando un error de "address already in use". Cualquier puerto local libre funciona.

## Apuntar Su Cliente de Base de Datos al Túnel

En su cliente gráfico, cree una conexión MySQL sencilla con estos valores:

| Campo | Valor |
|---|---|
| Host | `127.0.0.1` |
| Puerto | `3307` (el puerto local que haya reenviado) |
| Usuario | El **Usuario** de la pestaña Base de datos |
| Contraseña | La **Contraseña** de la pestaña Base de datos |
| Base de datos | El nombre de la **Base de datos** de la pestaña Base de datos |

No ponga el host SSH en el campo Host. En lo que respecta al cliente, está hablando con una base de datos en su propia máquina.

### Clientes Con una Pestaña SSH Integrada

TablePlus, Sequel Ace, DBeaver y MySQL Workbench pueden gestionar el túnel por sí mismos, lo que evita tener que mantener una terminal abierta. Complete dos grupos de campos:

- **Sección SSH**: host, puerto, nombre de usuario y archivo de clave privada desde la página de Claves SSH.
- **Sección de base de datos**: host `127.0.0.1`, puerto `3306`, además del nombre de la base de datos, el usuario y la contraseña de la pestaña Base de datos.

Cuando el cliente cree el túnel, use `3306` en la sección de base de datos en lugar de su puerto local reenviado. El cliente se conecta desde el punto de vista del servidor, por lo que ve el puerto real.

## Usar phpMyAdmin en Su Lugar

Si solo necesita echar un vistazo rápido a una tabla, no necesita ningún túnel. La pestaña Base de datos tiene una tarjeta de **phpMyAdmin** con un botón **Abrir phpMyAdmin**. Le inicia sesión a través de KPanel, por lo que no hay que recordar una contraseña aparte, y se abre en una pestaña nueva ya apuntando a la base de datos de este sitio.

phpMyAdmin es la opción más rápida para explorar, ejecutar una consulta puntual o comprobar un valor. Un cliente de escritorio a través de un túnel es mejor para exportaciones grandes, trabajo con el esquema y cualquier cosa que quiera automatizar mediante scripts. Consulte [Usar phpMyAdmin](https://support.kapsulehost.com/es-es/sites-phpmyadmin) para la vía del navegador.

## Ejecutar Consultas y Volcados a Través del Túnel

Con el túnel abierto, las herramientas de línea de comandos habituales funcionan con normalidad, apuntando a su puerto local reenviado:

```sh
mysql -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name>

mysqldump -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name> > backup.sql
```

> **Warning:** Un volcado manual es una copia de conveniencia, no una estrategia de respaldo. Solo está tan actualizada como el momento en que lo ejecutó, y vive en el portátil desde el que lo ejecutó. KapsuleHost ya realiza copias de seguridad diarias automáticas del sitio, conservadas durante 30 días. Consulte [Hacer una copia de seguridad](https://support.kapsulehost.com/es-es/taking-a-backup) antes de confiar en un archivo `.sql` local.

## Solución de Problemas

**"Address already in use" al abrir el túnel.** Algo en su máquina ya está usando ese puerto local. Elija otro, por ejemplo `-L 3399:127.0.0.1:3306`, y cambie el puerto en su cliente para que coincida.

**"Connection refused" desde el cliente de base de datos.** El túnel no está activo. Compruebe que la terminal SSH siga en ejecución y no haya mostrado un error, y que el puerto en su cliente coincida con el puerto local del argumento `-L`.

**SSH se conecta pero el cliente sigue agotando el tiempo de espera.** Confirme que reenvió a `127.0.0.1:3306` y no al nombre de host público. Reenviar al nombre público pide al servidor que alcance la base de datos a través de internet, que es exactamente lo que está bloqueado.

**"Access denied for user".** El inicio de sesión SSH se realizó correctamente, pero las credenciales de MySQL son incorrectas. Copie de nuevo el nombre de usuario y la contraseña desde la pestaña Base de datos usando los iconos de copiar en lugar de volver a escribirlos, y compruebe que se está conectando al nombre de base de datos correcto.

**Permission denied (publickey) antes incluso de llegar a MySQL.** Eso corresponde a la capa SSH, no a la base de datos. Revise la sección de solución de problemas de [Agregar claves SSH a un sitio](https://support.kapsulehost.com/es-es/adding-ssh-keys).

## Qué Hacer a Continuación

- [Subir archivos con SFTP](https://support.kapsulehost.com/es-es/sftp-access) usa las mismas credenciales SSH para la transferencia de archivos.
- [Usar phpMyAdmin](https://support.kapsulehost.com/es-es/sites-phpmyadmin) para el trabajo con la base de datos desde el navegador.
- [Restaurar desde una copia de seguridad](https://support.kapsulehost.com/es-es/restoring-from-backup) si una consulta ha ido más allá de lo que pretendía.
