Apa yang dimaksud nomor saluran dalam pesan kesalahan ssh?

12

Dalam contoh di bawah ini apa yang berhubungan dengan nomor saluran? Yang ada di server? Yang ada di klien?

  $ ssh -L1570:127.0.0.1:8899 root@thehost
    Password:
    Last login: Fri Aug  9 13:08:44 2013 from theclientip
    Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
    You have new mail.
    # channel 2: open failed: administratively prohibited: open failed
    channel 3: open failed: administratively prohibited: open failed
    channel 2: open failed: administratively prohibited: open failed

Klien ssh berjalan pada Windows 7 dan server memiliki server Tomcat yang berjalan pada port 8899.

Tomcat tidak mendengarkan 127.0.0.1 pada mesin jarak jauh jadi jika saya mengubah perintah ke ssh -L1570:thehostpublicip:8899 root@thehostport forward berfungsi. Jadi saya tahu bahwa penerusan port tampaknya berfungsi dengan baik di server.

file konfigurasi sshd saya berisi dua baris berikut:

# Port forwarding
AllowTcpForwarding yes

# If port forwarding is enabled, specify if the server can bind to INADDR_ANY.
# This allows the local port forwarding to work when connections are received
# from any remote host.
GatewayPorts yes

Saya mencoba mengatur port forwarding untuk proses lain bukan Tomcat dan saya mendapatkan pesan kesalahan yang serupa dengan hal-hal di atas, jadi saya mencoba memahami arti pesan kesalahan tersebut.

am
sumber

Jawaban:

21

Dari dokumentasi Protokol SSH , mengenai saluran:

Semua sesi terminal, koneksi yang diteruskan, dll., Adalah saluran. Masing-masing pihak dapat membuka saluran. Beberapa saluran digandakan menjadi satu koneksi.

Saluran diidentifikasi dengan angka di setiap ujung. Nomor yang merujuk ke saluran mungkin berbeda di setiap sisi. Permintaan untuk membuka saluran berisi nomor saluran pengirim. Pesan terkait saluran lainnya berisi nomor saluran penerima untuk saluran tersebut.

Saluran dikendalikan aliran. Tidak ada data dapat dikirim ke saluran sampai pesan diterima untuk menunjukkan bahwa ruang jendela tersedia.

Penerusan port

Perintah yang Anda miliki terlihat baik-baik saja. Apakah Anda yakin bahwa layanan yang Anda coba sambungkan sudah habis dan menerima koneksi? Kesalahan saluran tampaknya menunjukkan bahwa itu bukan.

Apa saluran aktif saya?

Jika Anda memiliki sshkoneksi aktif, Anda dapat menggunakan kombinasi tombol berikut untuk mendapatkan bantuan:

Shift+ ~diikuti oleh Shift+?

$ ~?
Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
debug2: channel 2: written 480 to efd 8

Anda kemudian dapat menggunakan kombinasi tombol ini untuk mendapatkan daftar saluran yang aktif:

Shift+ ~diikuti oleh Shift+#

$ ~#
The following connections are open:
  #2 client-session (t4 r0 i0/0 o0/0 fd 6/7 cc -1)
debug2: channel 2: written 93 to efd 8
slm
sumber
4

Jika tomcat tidak mendengarkan pada loopback (127.0.0.1) maka port forward untuk itu akan memberikan pesan kesalahan yang telah Anda terima.

Jika saya melakukan ssh, dengan port forward ke port non-listening (misalnya: ssh -L1234:127.0.0.1:9999 10.0.0.1- di mana tidak ada proses pada 10.0.0.1 terikat ke port 9999 pada 127.0.0.1), saya mendapatkan kesalahan yang sama:

channel 2: open failed: administratively prohibited: open failed

Anda dapat mengetahui saluran apa yang dirujuk dengan menambahkan -vvvssh Anda

ssh -vvv -L1570:127.0.0.1:8899 root@thehost

Port mana yang merupakan "proses lain" yang mendengarkan (dan pada alamat IP apa), netstat -tulpnakan mengonfirmasi port dan proses IP apa yang digunakan pada server Anda, -L harus menunjuk ke alamat dan port yang didengarkannya.

Drav Sloan
sumber
Saya tidak dapat mereproduksi di atas. Apakah Anda mengaktifkan parameter ssh di klien dan / atau server untuk mendapatkan ini?
slm
Tidak (konfigurasi 'out of the box' standar di kedua sisi). Sejauh yang saya bisa, Anda dapatkan connect failed: Connection refusedketika firewall menolak koneksi. administratively prohibited: open failedada di host tanpa firewall.
Drav Sloan