Sitios web
Conectándose a su Base de Datos a través de un Túnel SSH
Your site's MySQL server only listens on the server's own loopback address, so a desktop tool such as TablePlus, Sequel Ace, DBeaver or MySQL Workbench cannot dial it directly. An SSH tunnel gives…
Tu servidor MySQL del sitio solo escucha en la dirección de loopback del servidor, así que una herramienta de escritorio como TablePlus, Sequel Ace, DBeaver o MySQL Workbench no puede conectarse directamente. Un túnel SSH proporciona a esas herramientas un puerto local que se reenvía a la base de datos, lo que te permite tener una GUI adecuada en tus datos sin abrir MySQL a internet.
Por qué se necesita un túnel
Abre Websites, haz clic en el sitio, luego Files, después Database. La tarjeta Connection details muestra el host como 127.0.0.1 y el puerto como 3306. No es un marcador de posición: la base de datos genuinamente 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 clase de ataques.
Un túnel SSH cierra esa brecha de forma segura. Tu cliente SSH abre un puerto en tu portátil, encripta todo lo que envíes a él, y se lo entrega a la base de datos desde dentro del servidor, exactamente como si un proceso local se hubiera conectado.

Lo que necesitas primero
Un túnel es una conexión SSH, así que necesitas una clave SSH registrada contra el sitio antes de que cualquiera de esto funcione. Sigue Adding SSH Keys To a Site primero, luego vuelve aquí.
Recopila cuatro cosas:
- SSH host, puerto y nombre de usuario, desde Files, después SSH Keys, en la tarjeta Connection details.
- Nombre de base de datos, nombre de usuario y contraseña, desde Files, después Database. Haz clic en el icono de ojo para revelar la contraseña y en el icono de copiar para ponerla en tu portapapeles.
Si la pestaña Database dice No database provisioned for this site type, este sitio no tiene uno. 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 otro lado de la conexión SSH.
ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
-L 3307:127.0.0.1:3306abre el puerto 3307 en tu máquina y lo reenvía al puerto 3306 en la interfaz de loopback del servidor.-Ndice que no ejecutes una shell, solo mantén el túnel abierto.- Añade
-i /path/to/keysi la clave para este sitio no es la predeterminada.
Deja esa ventana de terminal ejecutándose. Mientras esté abierta, 127.0.0.1:3307 en tu portátil es la base de datos del sitio.
Usa 3307 localmente en lugar de 3306. Si tienes MySQL o MariaDB instalado en tu propia máquina ya está usando 3306, y el túnel fallará al vincularse con un error "address already in use". Cualquier puerto local libre funciona.
Apuntar tu cliente de base de datos al túnel
En tu cliente GUI, crea una conexión MySQL simple con estos valores:
| Campo | Valor |
|---|---|
| Host | 127.0.0.1 |
| Port | 3307 (cualquiera que sea el puerto local que reenviaste) |
| User | El Username de la pestaña Database |
| Password | El Password de la pestaña Database |
| Database | El nombre Database de la pestaña Database |
No pongas el SSH host en el campo Host. Hasta donde concierne al cliente, está hablando con una base de datos en tu propia máquina.
Clientes con una pestaña SSH integrada
TablePlus, Sequel Ace, DBeaver y MySQL Workbench pueden todos gestionar el túnel ellos mismos, lo que ahorra tener una terminal abierta. Rellena dos grupos de campos:
- Sección SSH: host, puerto, nombre de usuario y archivo de clave privada de la página SSH Keys.
- Sección Database: host
127.0.0.1, puerto3306, más el nombre de base de datos, usuario y contraseña de la pestaña Database.
Cuando el cliente crea el túnel, usa 3306 en la sección database en lugar de tu puerto reenviado local. El cliente se está conectando desde el punto de vista del servidor, así que ve el puerto real.
Usar phpMyAdmin en su lugar
Si solo necesitas una mirada rápida a una tabla, no necesitas un túnel en absoluto. La pestaña Database tiene una tarjeta phpMyAdmin con un botón Open phpMyAdmin. Te inicia sesión a través de KPanel, así que no hay una contraseña separada para recordar, 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 navegar, ejecutar una consulta única o verificar un valor. Un cliente de escritorio sobre un túnel es mejor para exportaciones grandes, trabajo de esquema y cualquier cosa que quieras programar. Consulta Using phpMyAdmin para la ruta del navegador.
Ejecutar consultas y volcados a través del túnel
Con el túnel abierto, las herramientas de línea de comandos estándar funcionan normalmente, apuntadas a tu puerto reenviado local:
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
Un volcado manual es una copia de conveniencia, no una estrategia de copia de seguridad. Solo es tan fresco como el momento en que lo ejecutaste, y vive en cualquier portátil desde el que lo ejecutaste. Kapsule ya toma copias de seguridad automáticas diarias del sitio, retenidas durante 30 días. Consulta Taking a Backup antes de que confíes en un archivo .sql local.
Resolución de problemas
"Address already in use" al abrir el túnel. Algo en tu máquina ya está en ese puerto local. Elige otro, por ejemplo -L 3399:127.0.0.1:3306, y cambia el puerto en tu cliente para que coincida.
"Connection refused" del cliente de base de datos. El túnel no está arriba. Comprueba que la terminal SSH sigue ejecutándose y no ha impreso un error, y que el puerto en tu cliente coincide con el puerto local en el argumento -L.
SSH se conecta pero el cliente aún agota el tiempo. Confirma que reenviaste a 127.0.0.1:3306 y no al nombre de host público. Reenviar al nombre público le 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 tuvo éxito pero las credenciales de MySQL son incorrectas. Copia el nombre de usuario y la contraseña nuevamente desde la pestaña Database usando los iconos de copiar en lugar de escribirlos de nuevo, y comprueba que te estés conectando al nombre de base de datos correcto.
Permission denied (publickey) antes de que llegues a MySQL. Eso es la capa SSH, no la base de datos. Trabaja a través de la sección de resolución de problemas en Adding SSH Keys To a Site.
A dónde ir después
- Uploading Files With SFTP usa las mismas credenciales SSH para transferencia de archivos.
- Using phpMyAdmin para trabajo de base de datos basado en navegador.
- Restoring From a Backup si una consulta ha ido más lejos de lo que pretendías.