El servidor MS SQL con firewall desea suministrar datos al servidor Ubuntu en Internet.
Así que establecí un túnel SSH desde el servidor MS SQL al servidor Ubuntu, pidiéndole a Ubuntu que envíe su tráfico del port 1433 al port 1433 1433 de MS SQL.
De acuerdo con esta respuesta de desbordamiento de pila, creo que debería estar haciendo esto en el servidor MS SQL:
ssh -R 1433:localhost:1433 ubuntu.example.com Es una máquina con Windows, así que hice esto en PuTTY: 
En la red local, probé usando PHP para conectarme al servidor SQL y funciona.
$server = '192.168.0.12'; $user = 'buttle'; $pass = '1234'; mssql_connect($server,$user,$pass);Ahora quiero intentar conectar las mismas dos máquinas usando un túnel SSH en lugar de una conexión "directa". Así que cambio $ servidor a esto:
$server = 'localhost,1433';Y luego conecto un túnel SSH desde la máquina SQL Server a la máquina Ubuntu con PuTTy. Y quizás aquí es donde me estoy equivocando, porque no sé lo que estoy haciendo.
Recibo este error de PHP en la máquina Ubuntu:
Warning: mssql_connect(): Unable to connect to server: localhost,1433EDITAR:
También probé esto:
Y esto:
[![IPv4 remoto con dirección IP especificada en el servidor MS SQL][5]][5]
POR FIN, lo he solucionado. Mira mi respuesta.
Todos los tutoriales en línea para usar las funciones mssql de PHP asumen que está ejecutando PHP en un entorno Windows. Aparentemente, en Windows, IP y número de puerto están separados por una coma, pero en Linux por dos puntos.
// Linux running PHP $server = 'localhost:1433'; // Windows running PHP $server = 'localhost,1433';Como de costumbre, horas de problemas se reducen a un solo byte.