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.
sumber
Jawaban:
Jika Anda mengatur 'LogLevel' di file konfigurasi sshd_config ke DEBUG1 (atau level DEBUG lainnya), maka sshd akan mencatat nomor port di /var/log/auth.log.
Ingat, bahwa menggunakan LogLevel DEBUG atau lebih tinggi bisa menjadi risiko privasi, karena banyak yang dicatat.
(dari /var/log/auth.log, menghapus beberapa baris untuk menampilkan informasi yang relevan)
Jika Anda mengikutinya, Anda bisa melihat di mana Anda dapat mengurai informasi koneksi, dan kemudian port yang diteruskan (39813 dalam kasus ini)
Saya menggunakan baris perintah ini di antara dua mesin saya, saya memiliki pengaturan login ssh-key, jadi tidak ada kata sandi yang meminta atau menunda
-N menentukan tidak ada perintah yang diberikan, dan -T menghentikan alokasi tty untuk koneksi ini.
Cara lain untuk menyebarkan informasi koneksi port adalah menguraikannya dari sisi klien dan mengirim email, obrolan, pesan teks, sinyal asap atau merpati untuk membawa port # ke siapa pun yang membutuhkannya.
sumber
Anda dapat mengirimkan stderr
ssh
ke program yang membuka koneksi ke server pada mesin target dan melaporkan nama mesin / alamat IP / nomor seri / apa pun bersama dengan nomor port. Jenis seperti ini:sumber