Acceder a una base datos remota H2 en modo mixto automático
Digamos que tienes una aplicación ejecutándose en un servidor.
Digamos que esa aplicación usa una base de datos H2 en modo mixto automático.
Y digamos que quieres ejecutar alguna consulta SQL.
En el servidor
Descárgate el ZIP multiplataforma (platform independent ZIP) de la página de H2 y descomprímelo en el directorio que más te guste, que a partir de ahora será h2Dir.
Ve al directorio y ejecuta el servidor:
cd h2Dir
java -cp h2*.jar org.h2.tools.Server
La salida debe ser parecida a esta:
TCP server running at tcp://192.168.123.123:9092 (only local connections)
PG server running at pg://192.168.123.123:5435 (only local connections)
Web Console server running at http://192.168.123.123:8082 (only local connections)
Failed to start a browser to open the URL http://192.168.123.123:8082: Browser detection failed, and java property 'h2.browser' and environment variable BROWSER are not set to a browser executable.
Donde nos avisa de lo que nos interesa: que ha abierto en el puerto 8082 un servidor de consola.
192.168.123.123 es, por supuesto, una IP ficticia que representa a la IP de tu servidor.
En tu ordenador
Tal y como nos ha avisado la salida de la ejecución del servidor H2, solo permite conexiones locales, de modo que si alguien intenta acceder a 192.168.123.123:8082 no va a poder acceder. Entonces, ¿cómo accedemos?
Haremos una redirección local de puertos usando ssh. Ejecuta:
ssh -L 127.0.0.1:8083:192.168.123.123:8082 tu_usuario_ssh@192.168.123.123 -N
Acabas de crear un tunel ssh. Suena bien, ¿verdad? such wow, very internet, peazo de hacker estás hecho.
En este caso, lo que quiere decir es que ahora puedes iniciar una conexión TCP desde tu ordenador contra el puerto 8082 del servidor como si estuvieras allí, simplemente atacando al puerto 8083 de tu ordenador.
He usado 8083 por claridad, para que se vea que primero se escribe el local y luego el remoto, pero podrías usar el mismo número de puerto.
Ya puedes abrir localhost:8083 en tu navegador, y rellenar los datos de conexión.

La parte importante aquí es la JDBC URL, con el valor
jdbc:h2:~/theDatabaseDir/database;AUTO_SERVER=TRUE
Donde theDatabaseDir es el directorio donte está el archivo de la base de datos H2 database.mv.db, desde el directorio del usuario tu_usuario_ssh.
¿Quieres que me extienda en este truco? Pues revienta este botón a clickazos: