Liebe Liste, entschuldigung, falls das doppelt kommt. Ich hatte die mail zunächst mit dem falschen, nicht bei der Liste angemeldeten E-Mail-Account abgesandt. Ich möchte gern eine lokal MySQL-Datenbank mit einer im Internet synchronisieren. Da das mittels php automatisch passieren soll, nutze ich ssh mit Schlüsseln etc. Nicht unerwähnt lassen möchte ich an dieser Stelle, dass ich auf dem Server im www ein Timeout von 2 min. habe. Ich verbinde mich zunächst mit dem Server wie folgt: ssh -fNg -v -L 3307:127.0.0.1:3306 username@mydomain.de Schon hier habe ich Probleme, denn ich erhalte folgende Fehlermeldung: debug1: Local forwarding listening on :: port 3307. bind: Address already in use debug1: Local forwarding listening on 0.0.0.0 port 3307. bind: Address already in use channel_setup_fwd_listener: cannot listen to port: 3307 Could not request local forwarding. Diese verwundert mich. Denn wenn ich anschließend den Befehl netstat > netstat.txt aufrufe und dann die Datei netstat.txt durchsuche, sehe ich nichts von belegten Ports (3306 oder 3307). Auch habe ich mit der Adresse 0.0.0.0 diesen Befehl nicht aufgerufen. Falls noch weitere, wichtige Angaben fehlen, bitte ich um Rückmeldung. Schlimm ist, dass das irgendwann mal bereits funktioniert und ich komme aufs Haareausraufen nicht mehr drauf, wie ich es geschafft hatte! Wo kann ich idealer Weise mit der Fehlersuche beginnen? Gruß und Dank, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Alex Winzer schrieb:
Liebe Liste,
entschuldigung, falls das doppelt kommt. Ich hatte die mail zunächst mit dem falschen, nicht bei der Liste angemeldeten E-Mail-Account abgesandt.
Ich möchte gern eine lokal MySQL-Datenbank mit einer im Internet synchronisieren. Da das mittels php automatisch passieren soll, nutze ich ssh mit Schlüsseln etc. Nicht unerwähnt lassen möchte ich an dieser Stelle, dass ich auf dem Server im www ein Timeout von 2 min. habe.
Ich verbinde mich zunächst mit dem Server wie folgt:
ssh -fNg -v -L 3307:127.0.0.1:3306 username@mydomain.de
Schon hier habe ich Probleme, denn ich erhalte folgende Fehlermeldung:
debug1: Local forwarding listening on :: port 3307. bind: Address already in use debug1: Local forwarding listening on 0.0.0.0 port 3307. bind: Address already in use channel_setup_fwd_listener: cannot listen to port: 3307 Could not request local forwarding.
Diese verwundert mich. Denn wenn ich anschließend den Befehl
netstat > netstat.txt
aufrufe und dann die Datei netstat.txt durchsuche, sehe ich nichts von belegten Ports (3306 oder 3307). Auch habe ich mit der Adresse 0.0.0.0 diesen Befehl nicht aufgerufen. Falls noch weitere, wichtige Angaben fehlen, bitte ich um Rückmeldung. Schlimm ist, dass das irgendwann mal bereits funktioniert und ich komme aufs Haareausraufen nicht mehr drauf, wie ich es geschafft hatte!
Wo kann ich idealer Weise mit der Fehlersuche beginnen?
Gruß und Dank, Alex
Hallo Alex, die Ausgabe von ssh liest sich allerdings so, als ob Port 3307 schon belegt ist. 1. netstat -an | grep 3307 - netstat ohne "-a" listet nur verbundene Sockets auf, nicht diejenigen, auf denen ein Programm auf eine Verbindung wartet. 2. läuft noch ein ssh-Client im Hintergrund, der dasselbe Portforwarding benutzt? Dann kann der zweite ssh-Client nicht auf den Port zugreifen. 3. Versuch's mal mit einem anderen Port auf der Client-Seite, also -L 3306:127.0.0.1:3306 (wenn lokal kein MySQL läuft) oder -L 33306:127.0.0.1:3306 (falls nicht irgendein esoterisches Programm bei Dir Port 33306 belegt ...) Gruß Christian -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
From: "Christian Pelz"
Alex Winzer schrieb:
[...]
Ich verbinde mich zunächst mit dem Server wie folgt:
ssh -fNg -v -L 3307:127.0.0.1:3306 username@mydomain.de
Schon hier habe ich Probleme, denn ich erhalte folgende Fehlermeldung:
debug1: Local forwarding listening on :: port 3307. bind: Address already in use debug1: Local forwarding listening on 0.0.0.0 port 3307. bind: Address already in use channel_setup_fwd_listener: cannot listen to port: 3307 Could not request local forwarding.
Diese verwundert mich. Denn wenn ich anschließend den Befehl
netstat > netstat.txt
aufrufe und dann die Datei netstat.txt durchsuche, sehe ich nichts von belegten Ports (3306 oder 3307). Auch habe ich mit der Adresse 0.0.0.0 diesen Befehl nicht aufgerufen.
Wo kann ich idealer Weise mit der Fehlersuche beginnen?
Hallo Alex,
die Ausgabe von ssh liest sich allerdings so, als ob Port 3307 schon belegt ist.
1. netstat -an | grep 3307 - netstat ohne "-a" listet nur verbundene Sockets auf, nicht diejenigen, auf denen ein Programm auf eine Verbindung wartet.
Leider nichts dergleichen. Der Port ist - so deute ich das - nicht belegt. Gebe ich aber folgendes ein netstat | grep mydomain.de ein, erhalte ich folgende Ausgabe: tcp 0 0 lokaleIP:19622 mydomain.de:ssh ESTABLISHED Eine Verbindung steht
2. läuft noch ein ssh-Client im Hintergrund, der dasselbe Portforwarding benutzt? Dann kann der zweite ssh-Client nicht auf den Port zugreifen.
Nicht das ich wüsste. Ansonsten müsste ich ja mit netstat (-an) etwas zu sehen bekommen.
3. Versuch's mal mit einem anderen Port auf der Client-Seite, also -L 3306:127.0.0.1:3306 (wenn lokal kein MySQL läuft) oder -L 33306:127.0.0.1:3306 (falls nicht irgendein esoterisches Programm bei Dir Port 33306 belegt ...)
Klappt auch nicht. Wie gesagt: Es steht in der Fehlermeldung auch mit drin: bind: Address already in use Denn eine (welche auch immer) Portweiterleitung versucht er ja.
Gruß
Christian
Das bringt mich dann zu meiner nächsten Frage: Wie werde ich denn eine im Hintergrund befindliche Instanz wieder los? Ich habe mir mal man ssh angesehen. Dort steht dann etwas von "~.". Leider kann ich damit nicht wirklich was anfangen... Gruß und schönmal Danke, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Ich zitiere mich mal selbst. Denn ich habe im Archiv etwas gefunden. http://lists.opensuse.org/opensuse-de/2008-02/msg00582.html http://lists.opensuse.org/opensuse-de/2009-02/msg01246.html Daran sehe ich zwar, dass ich nicht der einzige mit dem Problem bin. Einer Lösung bin ich aber trotzdem noch nicht näher gekommen. Falls Torsten Foertsch das liest: Ich würde mich freuen, wenn ich vom Lösungsansatz ssh ... 'while echo irgendwas; do sleep 10; done' auch noch die Sektion mit dem "..." sehen dürfte. Denn zum Testen - und da komme ich wieder auf mein Ausgangsproblem - wäre es schön, wenn ich mir nicht schon selbst dadurch schade, dass der Tunnel steht und steht und steht und ... From: "Alex Winzer"
From: "Christian Pelz"
Alex Winzer schrieb:
[...]
Wo kann ich idealer Weise mit der Fehlersuche beginnen?
Hallo Alex,
die Ausgabe von ssh liest sich allerdings so, als ob Port 3307 schon belegt ist.
1. netstat -an | grep 3307 - netstat ohne "-a" listet nur verbundene Sockets auf, nicht diejenigen, auf denen ein Programm auf eine Verbindung wartet.
Leider nichts dergleichen. Der Port ist - so deute ich das - nicht belegt. Gebe ich aber folgendes ein
netstat | grep mydomain.de
ein, erhalte ich folgende Ausgabe:
tcp 0 0 lokaleIP:19622 mydomain.de:ssh ESTABLISHED
Eine Verbindung steht
2. läuft noch ein ssh-Client im Hintergrund, der dasselbe Portforwarding benutzt? Dann kann der zweite ssh-Client nicht auf den Port zugreifen.
Nicht das ich wüsste. Ansonsten müsste ich ja mit netstat (-an) etwas zu sehen bekommen.
3. Versuch's mal mit einem anderen Port auf der Client-Seite, also -L 3306:127.0.0.1:3306 (wenn lokal kein MySQL läuft) oder -L 33306:127.0.0.1:3306 (falls nicht irgendein esoterisches Programm bei Dir Port 33306 belegt ...)
Klappt auch nicht. Wie gesagt: Es steht in der Fehlermeldung auch mit drin:
bind: Address already in use [...]
Das bringt mich dann zu meiner nächsten Frage:
Wie werde ich denn eine im Hintergrund befindliche Instanz wieder los? Ich habe mir mal man ssh angesehen. Dort steht dann etwas von "~.". Leider kann ich damit nicht wirklich was anfangen...
Gruß und schönmal Danke, Alex
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Mon 09 Mar 2009, Alex Winzer wrote:
Falls Torsten Foertsch das liest: Ich würde mich freuen, wenn ich vom Lösungsansatz ssh ... 'while echo irgendwas; do sleep 10; done' auch noch die Sektion mit dem "..." sehen dürfte.
Im Prinzip ist Deine -L Angabe schon richtig. Dein Problem ist vorher, Dein Linux sagt nämlich, daß der lokale Port 3307, auf dem der ssh-Client lauschen soll, belegt ist. Wer ihn belegt, kriegst Du mit netstat raus. Die richtigen Optionen hat Christian Dir im Prinzip schon genannt. Einfach nur netstat reicht nicht. sudo netstat -ntpl | grep 3307 wäre z.B. hilfreich. Dich interessieren nämlich keine verbundenen Sockets, sondern lauschende (-l Option, kleines L). Bei mir läuft cups und lauscht auf Port 3281, demzufolge: $ sudo netstat -ntpl | grep 3281 tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3281/cupsd tcp 0 0 ::1:631 :::* LISTET 3281/cupsd Rufe ich allerdings netstat ohne -l oder -a auf: $ sudo netstat -ntp | grep 3281 bleibt die Ausgabe leer, da er nur verbunden Sockets listet. Ansonsten schreibe ich Port Forwarder in ~/.ssh/config, z.B. Host t HostKeyAlias host.name.tld Hostname 11.22.33.44 CheckHostIP no Port 22 User user_name ConnectTimeout 1 # proxy LocalForward 192.168.254.10:8080 10.20.30.40:8080 ... Nun kann ich sagen ssh t 'while echo xxx; do sleep 10; done' </dev/null >/dev/null 2>&1 & und dann z.B. ALL_PROXY=http://192.168.254.10:8080/ curl http://... Torsten -- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 9. März 2009 schrieb Torsten Foertsch:
Bei mir läuft cups und lauscht auf Port 3281, demzufolge:
$ sudo netstat -ntpl | grep 3281 tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3281/cupsd tcp 0 0 ::1:631 :::* LISTET 3281/cupsd
631 ist die Portnummer, 3281 ist die Prozess-ID von cupsd. Gruss Jürg -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Entschuldigung für die PM! From: "Juerg Schneider" Am Montag, 9. März 2009 schrieb Torsten Foertsch:
Bei mir läuft cups und lauscht auf Port 3281, demzufolge:
$ sudo netstat -ntpl | grep 3281 tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3281/cupsd tcp 0 0 ::1:631 :::* LISTET 3281/cupsd
631 ist die Portnummer, 3281 ist die Prozess-ID von cupsd.
Gruss
Jürg
Danke an alle! Das mit dem Finden der "lauschenden" Ports funktioniert prima. Ich habe auch meinen "Fehler" gefunden. Entgegen der Aussage meines Webhosters wird die Verbindung *nicht* nach einem Timeout von 2 min getrennt. Sie bleibt also ewig offen, bis ich den Server neu starte oder mein Provider nach 24 h die Zwangstrennung macht. Ich muss also nochmal meine 2te Frage vorholen: Wie kann ich eine mit dem Schalter -f in den background geschobene ssh-Instanz nebst Tunnel schließen? Ich will und kann den Port-Forwarder nicht fest eintragen. Er soll mittels php auf- und abgebaut werden. Ich bin mir sicher, dass genau das mit dem Code von Torsten klappt. Ich verstehe ihn nur leider nicht und möchte nicht blind etwas abtippen. Gibt es dazu weiterführende Links? Gruß, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Alex Winzer, Dienstag, 10. März 2009 08:42:
Ich muss also nochmal meine 2te Frage vorholen: Wie kann ich eine mit dem Schalter -f in den background geschobene ssh-Instanz nebst Tunnel schließen?
Du könntest sie mit ps ax | grep... | cut... | xargs kill [1] finden und abschießen. Alternativ könntest Du auch gleich das ursprüngliche Skript seine PID in eine Datei schreiben lassen, und diese Datei dann zum Abschießen auslesen. [1] geht sicher auf einen schlag mit awk, aber das sagt Dir ggf. David. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Alex Winzer
-
Andre Tann
-
Christian Pelz
-
Juerg Schneider
-
Torsten Foertsch