Saya menggunakan banyak terowongan SSH ke berbagai server di mesin linux saya (untuk tunneling ke database, server web, dll) dan akan sangat berguna untuk melihat daftar terowongan terbuka saat ini melalui skrip shell.
Saya dapat mengidentifikasi koneksi lokal melalui grep di netstat di sepanjang baris:
netstat -n --protocol inet | grep ':22'
tapi ini tidak akan menunjukkan port remote yang terhubung (dan jelas termasuk koneksi SSH standar yang tidak disetel)
PEMBARUAN : Jawabannya baik-baik saja tetapi tidak menunjukkan port jarak jauh yang terhubung dengan saya. Misalnya saya sering memiliki terowongan ke mysql, katakan localhost: 3308 mapping ke: 3306 pada server. Biasanya saya bisa menebak dengan port lokal yang saya pilih tetapi akan lebih baik untuk memiliki akses ke keduanya.
Ada ide?
sumber
Jawaban:
jika Anda hanya ingin membuat daftar terowongan yang dibuat oleh
ssh
:(itu akan menjadi -L 9090: localhost: 80 tunnel)
jika Anda ingin melihat terowongan / koneksi dibuat ke
sshd
:ssh-daemon mendengarkan pada port 22 (baris terakhir), 2 subproses muncul (2 baris pertama, login 'user'), sebuah -R tunnel dibuat pada port 5000, dan -L tunnel yang meneruskan port dari saya ( lokal) mesin ke localhost: 80 (www).
sumber
Coba perintah ini, mungkin bermanfaat:
sumber
bukan solusi tepat untuk masalah Anda, tetapi terkadang juga berguna:
Dari dalam sesi ssh:
menampilkan daftar semua koneksi terbuka melalui terowongan Anda untuk sesi itu.
sumber
EDIT: contoh untuk komentar @akira:
Yang dapat dibaca sebagai: SSH (bukan SSHd) sedang mendengarkan port TCP lokal 1443.
sumber
-p
hanya menunjukkan proses Anda sendiri (semua proses oleh root). Juga, perintah itusshd
juga terlihat .-l
-R
terowongan secara lokal jika tidak digunakan. Tapi benar, jika sedang digunakan, Anda dapat menangkapnya tanpa-l
Ini adalah hasil teratas Google untuk pertanyaan ini, jadi saya akan memberikan jawaban saya di sini. Saya begadang semalaman memfilter hasilnya, dan muncul dengan perintah kompleks panjang yang menunjukkan Anda hanya terowongan ssh terbalik Anda dalam format ini:
publicipaddress: remoteforwardedport
Berikut adalah kode, saya menjalankan Ubuntu Server 12. Saya menjalankan terowongan ssh terbalik yang meneruskan port lokal 5900 ke server ssh publik saya, dan perintah yang bagus ini menunjukkan semua alamat ip publik saya dengan port jarak jauh.
sumber
Output sampel:
sumber
sumber
sumber
Karena saya tidak suka lsof, saya menyarankan metode alternatif (orang lain mengajari saya :)):
$ netstat -l | grep ssh
Dengan cara ini Anda menunjukkan terowongan ssh yang dibuat oleh
ssh
yang dibuka dalam mode LISTEN (dan dihilangkan secara default olehnetstat
).sumber