
Ich habe einen Remote-Server, auf den ich mich problemlos per SSH einloggen kann. Ich habe PostgreSQL (ps) auf dem Remote-Server (genannt „enc“) und auf dem lokalen Rechner eingerichtet, beide laufen auf 5432 (Standard). Der Remote-Server lässt keine Verbindungen von außen zu (der lokale Webserver geht direkt zu ihm).
Ich versuche, einen SSH-Tunnel einzurichten, um das Ausführen von Befehlen auf dem Remote-PS-Server einfacher zu machen, als Dateien zu kopieren, mich beim Server anzumelden und sie dort manuell auszuführen.
Ich habe versucht, den folgenden Befehl auszuführen
ssh -N -L 5555:enc:5432 enc
Der Tunnel scheint korrekt eingerichtet zu sein, aber wenn ich versuche, eine Verbindung zum Remote-Computer herzustellen mit
psql -p 5555
es heißt, es funktioniert nicht
psql: could not connect to server: No such file or directory. Is the server running locally and accepting connections on Unix domain socket "/run/postgresql/.s.PGSQL.5555"?
Handelt es sich hier wahrscheinlich um ein Problem mit den Tunneleinstellungen oder den restriktiven Benutzerberechtigungen (ich stelle mir vor, dass der Fehler in diesem Fall anders aussehen würde)?
Antwort1
Versuche dies:
ssh -N -L 5555:enc:5432 localhost
und dann
lsof -i :5555
Wenn Sie dort nichts sehen, hört Ihr lokaler Computer nichts ab.
Antwort2
Typ
netstat -anp | grep LISTEN | grep "port_number"
auf Ihrem Servercomputer und suchen Sie nach der IP-Adresse, unter der der Dienst ausgeführt wird.
Wenn es sich um die IP-Adresse des Computers handelt, müssen Sie diese im Befehl „ssh -L“ angeben. Wenn es sich andernfalls um die Loopback-Adresse (127.0.0.1 – IPv4 oder ::1 – IPv6) handelt, geben Sie diese im Befehl an.
Antwort3
Es stellte sich heraus, dass das Problem weiter unten lag. Der Tunnel funktioniert einwandfrei, aber wenn Sie versuchen, eine Verbindung zu Postgres herzustellen, müssen Sie -h übergeben (auch wenn es für localhost ist), da sonst versucht wird, die Verbindung über einen Unix-Socket herzustellen (der direkt im Fehler enthalten ist) und nicht über TCP (was die einzige Möglichkeit ist, wie es mit einem Tunnel funktioniert).