Cara mengetahui mengaktifkan ssh port forwarding

12

Saya telah mengkonfigurasi ~/.ssh/configbanyak port forwarding untuk VNC dengan port yang berbeda untuk setiap server.

Apakah ada perintah yang dapat membantu saya untuk mengetahui port mana yang diteruskan ketika saya membuka sesi SSH?

slc66
sumber

Jawaban:

13

Jika Anda menggunakan -vopsi untuk sshitu akan menunjukkan kepada Anda apa yang Anda teruskan (tetapi juga akan menunjukkan kepada Anda banyak pesan debug lainnya):

ssh -v -L2222:localhost:22 remotehost

Akan menunjukkan kepada Anda:

...debug messages...
debug1: Authentication succeeded (publickey).
Authenticated to remotehost ([10.0.0.23]:22).
debug1: Local connections to LOCALHOST:2222 forwarded to remote address localhost:22
debug1: Local forwarding listening on ::1 port 2222.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 2222.
...debug messages...

Dan kemudian ketika Anda terhubung ke shell jauh itu, Anda dapat mengetik urutan tombol khusus:

~#

yang akan mencantumkan koneksi seperti ini:

The following connections are open:
  #3 client-session (t4 r0 i0/0 o0/0 fd 7/8 cc -1)
  #4 direct-tcpip: listening port 2222 for localhost port 22, connect from 127.0.0.1 port 59742 (t4 r1 i0/0 o0/0 fd 10/10 cc -1)

Perhatikan, bagaimanapun, bahwa ini hanya akan mencantumkan port yang diteruskan yang sebenarnya sedang digunakan oleh program lain (dalam hal ini saya baru saja melakukannya telnet localhost 2222pada komputer lokal saya untuk meneruskannya remotehost.

Jika Anda tidak memiliki koneksi apa pun yang sedang diteruskan, Anda masih dapat melihat perintah ssh Anda mendengarkan secara lokal dengan menggunakan netstatperintah seperti ini:

% netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:2222          0.0.0.0:*               LISTEN      28995/ssh       
tcp6       0      0 ::1:2222                :::*                    LISTEN      28995/ssh       

The netstatperintah juga akan mungkin daftar hal-hal lain, tapi apa yang ingin Anda cari dalam output adalah PID/Programkolom untuk mencari sshproses, dan Local Addresskolom yang akan menunjukkan apa port sedang mendengarkan. Dalam contoh ini sedang mendengarkan port 2222untuk antarmuka IPv4 dan IPv6 pada komputer saya.

aculich
sumber
1
Terima kasih atas jawaban ini, Tujuan saya adalah menambahkan skrip di /etc/update-motd.d/ untuk menampilkan Port yang dialihkan ke. Tetapi dengan perintah ~ #, saya hanya memiliki port yang dialihkan ke server. Dan tujuannya adalah untuk menampilkan (bagian dari ssh -v output): Koneksi lokal ke LOCALHOST: 5901 diteruskan ke alamat jarak jauh 127.0.0.1.1900 Mendengarkan penerusan lokal pada :: 1 port 5901. Tampaknya mustahil HANYA menampilkan klien HANYA 2 baris ini sisi.
slc66
Untuk orang-orang yang datang ke sini pada tahun 2020+: netstattelah usang mendukung ss.
ScumCoder