Frage SSH-Tunnel verweigert Verbindungen mit "Kanal 2: Öffnen fehlgeschlagen"


Plötzlich (lies: ohne irgendwelche Parameter zu ändern) begann meine netbsd virtualmachine merkwürdig zu agieren. Die Symptome betreffen SSH-Tunneling.

Von meinem Laptop starte ich:

$ ssh -L 7000:localhost:7000 user@host -N -v

Dann in einer anderen Shell:

$ irssi -c localhost -p 7000

Das ssh debug sagt:

debug1: Connection to port 7000 forwarding to localhost port 7000 requested.
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug1: channel 2: free: direct-tcpip: listening port 7000 for localhost port 7000, connect from 127.0.0.1 port 53954, nchannels 3

Ich habe auch versucht mit localhost: 80 eine Verbindung zum (entfernten) Webserver herzustellen, mit identischen Ergebnissen.

Der Remote-Host führt NetBSD aus:

bash-4.2# uname -a
NetBSD host 5.1_STABLE NetBSD 5.1_STABLE (XEN3PAE_DOMU) #6: Fri Nov  4 16:56:31 MET 2011  root@youll-thank-me-later:/m/obj/m/src/sys/arch/i386/compile/XEN3PAE_DOMU i386

Ich bin ein bisschen verloren. Ich habe versucht zu rennen tcpdump auf dem Remote-Host, und ich habe diese "schlechte Chksum" entdeckt:

09:25:55.823849 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 67, bad cksum 0 (->3cb3)!) 127.0.0.1.54381 > 127.0.0.1.7000: P, cksum 0xfe37 (incorrect (-> 0xa801), 1622402406:1622402421(15) ack 1635127887 win 4096 <nop,nop,timestamp 5002727 5002603>

Ich habe versucht, den ssh-Daemon ohne Erfolg neu zu starten. Ich habe noch nicht neu gestartet - vielleicht kann hier jemand andere Diagnosen vorschlagen. Ich denke, es könnte entweder der virtuelle Netzwerkkartentreiber sein, oder jemand, der unser ssh verwurzelt hat.

Ideen ..?


47
2018-03-19 09:32


Ursprung


Versuchen Sie zur Fehlerbehebung $ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v. (Sie können "-v" bis zu 3 Mal verwenden, um die Ausführlichkeit zu erhöhen.) Ist es auch möglich, dass ssh kürzlich aktualisiert wurde? - Mike Sherrill 'Cat Recall'
Das Ausgabeprotokoll, das ich eingefügt habe, wurde bereits mit -v gesammelt. - lorenzog
Sie können -v bis zu dreimal verwenden, um die Ausführlichkeit zu erhöhen. Sie könnten sich also die Ausgabe von ssh -L 7000... -N -v -v (zwei v's) oder ssh -L 7000... -N -v -v -v. - Mike Sherrill 'Cat Recall'
@ MikeSherrill'CatRecall 'Eine Kurzschrift kann auch verwendet werden: -vvv - jnns


Antworten:


Problem gelöst:

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v

...offenbar, 'localhost'wurde vom Remote-Host nicht gemocht. Aber, fern /etc/hosts enthält:

::1                     localhost localhost.
127.0.0.1               localhost localhost.

während die lokale Netzwerkschnittstelle ist

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33184
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2

Seufzer. so viel für die Prämie von 100 rp legte ich :)


22
2018-03-31 20:48



Ah. Nun, ich werde mir nicht die Mühe machen, meinen Kommentar als Antwort zu schreiben. (Überprüfen Sie, ob ssh IP-Adressen auf Ihrem System bevorzugt.) - Mike Sherrill 'Cat Recall'
Nun, du hast vorgeschlagen, die Option -v zu verdoppeln, aber das hat nichts Neues gezeigt. Aber es hat mir geholfen, das Problem nach ein paar Tagen wieder zu sehen. Wenn du die Antwort aufschreiben willst, bin ich mehr als glücklich, dir das Kopfgeld zu geben. - lorenzog
Eigentlich war es wichtig, "localhost" durch "127.0.0.1" zu ersetzen. Die zusätzlichen Argumente "-v" hätten vielleicht hilfreich sein können, aber sie waren nicht das, worauf ich abzielte. Vielen Dank. - Mike Sherrill 'Cat Recall'
nach diesem Post auf Superuser: superuser.com/questions/346971/ssh-tunnel-connection-refused  Ein Programm, das für das Abhören einer bestimmten Adresse konfiguriert ist, wird diese spezifische Adresse abhören - jopasserat
Wenn ich das führende ":" hinzufügen würde, würde der Befehl in Ihrem Fall so aussehen: ssh -L: 7000: 127.0.0.1: 7000 user @ host -N -v -v - valentt


Obwohl das Problem von OP bereits gelöst wurde, entschied ich mich, die Lösung für mein Problem zu teilen, weil ich die gleiche Fehlermeldung von ssh bekam und auf anderen Seiten keine Lösung gefunden habe.

In meinem Fall musste ich mich mit dem Dienst verbinden, der nur auf IPv6 hört. Ich habe es versucht:

ssh -f root@192.168.0.18 -L 51005: 127.0.0.1: 51005 -N
ssh -f root@192.168.0.18 -L 51005: localhost: 51005 -N

und ein paar andere Möglichkeiten, aber es hat nicht funktioniert. Jeder Versuch der Verbindung zu http://localhost:51005 verursacht Fehler wie folgt: channel 2: open failed: connect failed: Connection refused

Die Lösung ist:

ssh -f root@192.168.0.18 -L 51005: [:: 1]: 51005 -N

Die IPv6-Adresse muss in eckigen Klammern stehen.


18
2017-09-26 08:23



Was ist, wenn Sie eine SSH-Konfigurationsdatei verwenden? Beispiel: "LocalForward localhost: 64160 192.168.1.56:3389" - meffect
Für mich fügt das Hinzufügen von führenden ":" funktioniert so Befehl in Ihrem Fall würde wie folgt aussehen: ssh -f root@192.168.0.18 -L: 51005: 127.0.0.1: 51005 -N - valentt


Ich würde das zuerst versuchen.

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v

Sie können "-v" bis zu 3 Mal verwenden, um die Ausführlichkeit zu erhöhen.

Ich denke diese Fehlermeldung können Wenn eine Firewall den Port 7000 blockiert, haben Sie dies bereits ausgeschlossen. (Wenn spätere Leser das nicht ausgeschlossen haben, sehen Sie sich die Ausgabe von netstat --numeric-ports.)

ich denken Ich habe diese Fehlermeldung möglicherweise schon vor langer Zeit gesehen, als ssh IPV6-Adressen nach einem Update zum ersten Mal bemerkt hat. Da könnte ich mich irren. Wenn Sie experimentieren möchten, können Sie die IPV6-Loopback-Adresse "0: 0: 0: 0: 0: 0: 0: 1" (oder ":: 1") versuchen.


6
2018-04-01 11:47





Ich habe den gleichen Fehler beim Versuch gefunden, sich mit einem anderen Server über einen SSH-Tunnel mit mysql zu verbinden. Ich fand, dass der bind-address-Parameter in /etc/my.cnf auf dem Zielserver an meine externe IP (Dual-NIC-Server) und nicht an interne gebunden war, für die ich keine Verwendung hatte.

Als ich bind-address = 127.0.0.1 gesetzt habe, konnte ich meinen ssh tunnel erfolgreich wie folgt benutzen:

ssh -N -f -L 3307:127.0.0.1:3306 user@server.name

mysql -h 127.0.0.1 --port=3307 --protocol=TCP -uusername -ppassword

3
2018-04-03 23:55



Das hat auch für mich funktioniert. Sie können MySQL nur an eine Adresse binden. - leeand00


Ich habe diesen Fehler beim Weiterleiten von Ports mit einem vollständiger Domainname anstelle von localhost:

ssh -L 5900:host.name.com:5900 x11vnc

Der Port wurde nur für localhost geöffnet. Um Verbindungen mit einem vollständig qualifizierten Namen zu akzeptieren, musste ich einen hinzufügen verbindender Hafen Beschreibung:

ssh -L *:5900:host.name.com:5900 x11vnc

das würde Verbindungen von überall erlauben (also ist es nicht so sicher, benutze es sparsam).


3
2017-12-11 19:47





"... anscheinend wurde 'localhost' vom entfernten Host nicht gemocht. Dennoch enthält remote / etc / hosts:"

Außer dass Sie ssh auf dem Client ausgeführt haben, wurde "localhost" von Ihrem Client nicht gemocht. Die Remote-Datei / etc / hosts dient der Remote-Verbindung aus nicht eingehend Verbindungen.


2
2018-04-01 14:42



das war auch verwirrend für mich. Wenn Sie localhost in Ihrer lokalen Maschine eingeben, wird es lokal aufgelöst - Ahmedov


Wenn ich das führende ":" hinzufügen würde, würde der Befehl in Ihrem Fall so aussehen:

ssh -L :7000:localhost:7000 user@host -N -v

2
2018-04-12 23:53



Zu viel Zeit ist vergangen und ich kann nicht zurückgehen und nachsehen, aber das sieht gut aus. - lorenzog


???

Kanal 2: Öffnen fehlgeschlagen: Verbindung fehlgeschlagen: Verbindung abgelehnt

Beim user@host es gibt nichts, Port 7000 zu hören, das ist einfach und das ist alles.


1
2018-03-31 04:06



Das ist nicht wahr. Es gibt einen Dienst, der auf host läuft: 7000. Ich habe es auch mit anderen Diensten versucht. - lorenzog
Nein, dann würde es einfach hängen bleiben. - RickyA
@ RickyA: Eigentlich stimmt das nicht. Wenn der Port nicht gebunden ist, wird die Verbindung abgelehnt. Ich habe diesen Fehler von der Verwendung des falschen internen Ports (wo kein Dienst ausgeführt wurde), der Fehler ging weg, wenn ich den Fehler korrigierte. poige ist richtig, wenn nichts auf den Port hört, wird es den Fehler verursachen. - erb


Ich habe dieselbe Fehlermeldung erhalten:

Kanal 3: Öffnen fehlgeschlagen: Verbindung fehlgeschlagen: Verbindung abgelehnt

Und die Ursache war ein menschlicher Fehler - ich versuchte, auf einen anderen Port auf dem Remote-Host als den angegebenen zuzugreifen.

Ich dachte mir nur, dass ich das teilen werde, obwohl das wahrscheinlich nicht der Grund ist, warum die meisten von euch diesen Fehler erleben.


1
2018-04-27 07:48



In meinem Fall: Genau das habe ich gemacht. Solch ein dummer Fehler, aber es dauerte diese Antwort, um mich den Hafen überprüfen zu lassen. Do. - Ken Sharp


Für mich habe ich es versucht ssh -L <port>:<remote server IP>:<port> <login>@<remote server IP> als ich hätte tun sollen ssh -L <port>:127.0.0.1:<port> <login>@<remote server IP>.

Ich hoffe, das hilft jemandem!


1
2017-09-17 03:11