ssh tunnel "channel 2: open fail" ile bağlantıları reddediyor


70

Aniden (okuma: herhangi bir parametreyi değiştirmeden) netbsd virtualmachine tuhaf davranmaya başladı. Belirtiler ssh tünellemeyle ilgilidir.

Dizüstü bilgisayarımdan başlatıyorum:

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

Sonra başka bir kabukta:

$ irssi -c localhost -p 7000

Ssh hata ayıklama diyor ki:

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

Localhost: 80 ile aynı sonuçları kullanarak (uzak) web sunucusuna bağlanmayı da denedim.

Uzaktaki ana bilgisayar NetBSD'yi çalıştırır:

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

Ben biraz kayboldum. tcpdumpUzaktaki bilgisayarda çalışmayı denedim ve şu 'kötü chksum'u gördüm:

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>

Ben boşuna ssh daemon yeniden başlatmayı denedim. Henüz yeniden başlatmadım - belki de birileri başka teşhisler önerebilir. Sanırım sanal ağ kartı sürücüsü olabilir ya da birileri bizim ssh'ımızı kullanıyordu.

Fikirler ..?


1
Sorun giderme için deneyin $ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v. (Ayrıntıları arttırmak için "-v" yi 3 kata kadar kullanabilirsiniz.) Ayrıca, ssh'in yakın zamanda güncellenmesi mümkün mü?
Mike Sherrill 'Kedi Hatırlama'

Yapıştırdığım çıktı günlüğü zaten -v ile toplandı.
lorenzog

1
Ayrıntı seviyesini artırmak için -v işlevini üç kata kadar kullanabilirsiniz. Yani ssh -L 7000... -N -v -v(iki v) veya çıkışına bakabilirsiniz ssh -L 7000... -N -v -v -v.
Mike Sherrill 'Cat Recall'

@ MikeSherrill'CatRecall 'Bir steno da kullanılabilir: -vvv
jnns

Yanıtlar:


42

Sorun çözüldü:

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

... görünüşe göre, ' localhost ' uzaktaki sunucu tarafından beğenilmedi. Ancak, uzaktan /etc/hostsiçerir:

::1                     localhost localhost.
127.0.0.1               localhost localhost.

yerel ağ arayüzü

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

İç çekmek. koyduğum 100rp ödül için çok fazla :)


1
Ah. Öyleyse, yorumumu bir cevap olarak yazmaktan rahatsız olmayacağım. (Ssh sisteminizde ipv6 adreslerini tercih edip etmediğine bakın.)
Mike Sherrill 'Cat Recall'

-V seçeneğini iki katına çıkarmayı önerdiniz, ancak bu yeni bir şey göstermedi ... ancak birkaç gün sonra sorunu tespit etmemde yardımcı oldu. Cevabı yazmak istersen, sana ödül vermekten çok mutlu olurum.
lorenzog

1
Aslında önemli olan nokta “localhost” un yerine “127.0.0.1” yazıyordu. "-V" ek argümanları yardımcı olabilirdi, fakat benim hedeflediğim şey değildi. Teşekkürler.
Mike Sherrill 'Kedi Geri Çağırma'

superuser'daki mesaja göre: superuser.com/questions/346971/ssh-tunnel-connection-refused , belirli bir adresi dinleyecek şekilde yapılandırılmış bir program söz konusu adresi dinleyecek
jopasserat

1
Benim için ":"
satırını

21

Her ne kadar OP'nin sorunu çözülmüş olsa da, sorunumun çözümünü paylaşmaya karar verdim, çünkü ssh'den aynı hata mesajını aldım ve diğer sitelerde bir çözüm bulamadım.

Benim durumumda sadece IPv6'da dinleyen servise bağlanmak zorunda kaldım. Denedim:

ssh -f root@192.168.0.18 -L 51005: 127.0.0.1: 51005 -N
ssh -f root@192.168.0.18 -L 51005: yerel ana bilgisayar: 51005 -N

ve birkaç diğer yolla ama işe yaramadı. Herhangi bir bağlantı denemesi, http://localhost:51005bunun gibi hatalara neden olur: channel 2: open failed: connect failed: Connection refused

Çözüm şudur:

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

IPv6 adresi köşeli ayraç içinde olmalıdır.


1
Ya ssh config dosyası kullanıyorsanız? örnek: "LocalForward localhost: 64160 192.168.1.56:3389"
meffect

Benim için ":" satırının eklenmesi benim durumunuzda böyle çalışacaktır, ssh -f root@192.168.0.18 -L: 51005: 127.0.0.1: 51005 -N
valentt

9

Önce bunu denerdim.

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

Ayrıntıyı artırmak için "-v" yi 3 kata kadar kullanabilirsiniz.

Bir güvenlik duvarı 7000 numaralı bağlantı noktasını engellediğinde bu hata iletisinin oluşabileceğini düşünüyorum , ancak bunu zaten reddetmiştiniz. (Daha sonra okuyucular bunu reddetmediyse, çıktısına bakın netstat --numeric-ports.)

Ben düşünüyorum ssh önce bir güncellemenin ardından IPV6 adresleri haberdar olunca ben uzun zaman önce bu hata mesajını görmüş olabilir. Bu konuda yanılmış olabilirim. Deneme yapmak isterseniz IPV6 geridöngü adresini "0: 0: 0: 0: 0: 0: 0: 1" (veya ":: 1") deneyebilirsiniz.


3

“... görünüşe göre, 'localhost' uzaktaki sunucu tarafından beğenilmedi. Oysa, uzak / etc / hosts içerir:

İstemcide ssh kullanıyor olmanız dışında, 'localhost' müşteriniz tarafından beğenilmedi. Uzaktan / etc / hosts dosyasını uzak bağlamak içindir dışarı değil , gelen bağlantıları.


1
Bu da benim için kafa karıştırıcıydı. Localmachine makinenizde localhost yazdığınızda, yerel olarak çözülür
Ahmedov

3

Bir ssh tüneli üzerinden başka bir sunucuda mysql bağlanmaya çalışırken bu aynı hatayla karşılaştı. Hedef sunucudaki /etc/my.cnf adresindeki bağlama adresi parametresinin, kullanmadığım dahili yerine harici ip (dual NIC sunucusu) ile bağlı olduğunu buldum.

Bağlama adresini ayarladığımda = 127.0.0.1, ssh tünelimi aşağıdaki gibi başarılı bir şekilde kullanabilirim:

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

Bu benim için de işe yaradı. MySQL'i sadece bir adrese bağlayabilirsiniz.
leeand00

3

Localhost yerine tam etki alanı adı olan bağlantı noktalarını iletirken bu hatayla karşılaştım :

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

Bağlantı noktası yalnızca yerel ana bilgisayar için açıldı, bu nedenle tam olarak adlandırılmış bir adla bağlantıları kabul etmek için bir bağlantı noktası açıklaması eklemek zorunda kaldım :

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

bu da her yerden bağlantıya izin verir (bu yüzden güvenli değil, dikkatli kullanın).


2

Benim için ":" satır lideri ekleyerek durumunuzdaki komut şöyle görünecektir:

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

Çok fazla zaman geçti ve geri dönüp kontrol edemiyorum, ama bu harika görünüyor.
lorenzog

1

???

kanal 2: açılmadı: bağlantı başarısız: bağlantı reddedildi

At user@hostport 7000 dinleme şey yok, bu kadar basit ve hepsi bu.


1
Bu doğru değil. Ev sahibinde çalışan bir servis var: 7000. Diğer hizmetleri de denedim.
lorenzog

2
Hayır, o zaman sadece bağlantıyı keserdi.
RickyA

4
@ RickyA: Aslında, bu doğru değil. Bağlantı noktası bağlı değilse bağlantı reddedilir. Bu hatayı yanlış dahili bağlantı noktasını (hiçbir servisin çalışmadığı yerlerde) kullanarak aldım, hatayı düzelttikten sonra hata gitti. poige, portta hiçbir şey dinlemiyorsa, hataya neden olacağı için haklıdır.
erb

1

Aynı hata mesajını aldım:

kanal 3: açılmadı: bağlantı başarısız: bağlantı reddedildi

Bunun nedeni insan hatasıydı - uzak ana bilgisayardaki belirlediğimden farklı bir bağlantı noktasına erişmeye çalışıyorum.

Bunu paylaşacağımı düşündüm, ancak bu muhtemelen çoğunuzun bu hatayı yaşamanın nedeni olmasa da.


Benim durumumda: bu tam olarak yaptığım şeydi. Böyle aptalca bir hata ama bu cevabı limanı kontrol etmemi sağladı. Hamuru.
Ken Sharp,

1

Benim için ssh -L <port>:<remote server IP>:<port> <login>@<remote server IP>ne zaman yapmam gerektiğini deniyordum ssh -L <port>:127.0.0.1:<port> <login>@<remote server IP>.

Umarım bu birine yardımcı olur!


1

Alternatif yorum, benim durumumda, yanlış yazmanızdır.

user@host ~ $ ssh -vvvNL 4444:127.0.0.0.1:4444
...
channel 2: open failed: connect failed: Name or service not known

Burada olan, IP adresinin çok fazla sıfır olduğu, dolayısıyla geçerli bir adres olmadığı. Böylece ssh, çözemediği bir etki alanı adı olarak değerlendirir. Hata!

Not: Bunu ekliyorum, bu yüzden aynı semptomları giderirken olası problemlerin kapsamlı bir listesine sahibiz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.