Saat membuat terowongan terbalik pada versi terbaru OpenSSH, port jarak jauh 0 dapat diberikan untuk mengikat setiap port yang tersedia:
-R [bind_address:] port: host: hostport
...
Jika argumen port adalah `0 ', port Listen akan dialokasikan secara dinamis di server dan dilaporkan ke klien pada saat run time.
manshage klien openssh ssh
Pertanyaan saya adalah bagaimana saya dapat (dengan cara otomatis) menentukan alokasi port ini di server. Tampaknya agak tidak membantu bahwa hal itu dilaporkan ke host yang menjalankan klien ssh - tetapi tidak ke target, yang ingin membuat koneksi ke port ini untuk mengakses layanan pada klien.
Dua opsi serupa yang dapat saya pikirkan sedang berjalan
# netstat -ntlp
pada server dan mencari port yang dicurigai terikat pada 127.0.0.1 oleh sshd atau dengan melihat output dari
# lsof -p $PPID | grep TCP | grep LISTEN
Tapi tidak satu pun dari ini yang menyenangkan dari sudut pandang otomatisasi, dan tidak ada cara untuk mengikat port dinamis kembali ke port layanan asal jika lebih dari satu terowongan tersebut dibuat.
Apakah ada sesuatu yang saya lewatkan untuk secara efektif mendapatkan daftar terowongan aktif (baik nomor port lokal dan jarak jauh) di sisi server sshd, seperti yang setara dengan variabel lingkungan SSH_CONNECTION, tetapi untuk terowongan aktif?
Untuk beberapa konteks, saya mencoba membuat terowongan reverse simultan yang berpotensi sangat banyak ke host, tunneling kembali ke nomor port yang sama pada banyak host yang berbeda. Memiliki TCP stack secara otomatis mengelola pool port sepertinya merupakan cara paling efektif untuk melakukan ini.