(Ini adalah jawaban oleh @xzfc dengan beberapa koreksi.)
Instal ncat
di mesin klien dan server Anda. Karena nc
dalam distribusi biasa (Debian, Ubuntu) tidak memiliki opsi untuk mengeksekusi perintah ( -c
/ -e
) yang kita butuhkan.
apt install nmap
Di mesin lokal Anda, atur server yang akan menjalankan perintah untuk memutar suara ketika koneksi dibuat untuk itu:
ncat --sh-exec "paplay /usr/share/sounds/freedesktop/stereo/complete.oga" \
--keep-open --listen localhost 10009
Atau gunakan perintah steno yang setara:
ncat -klc "paplay file.oga" localhost 10009
SSH ke host jarak jauh Anda sedemikian rupa sehingga terowongan terbalik dibuat dari port 10008 dari host jarak jauh ke port 10009 pada mesin lokal Anda (tempat server Anda mendengarkan):
ssh -R 10008:localhost:10009 me@somewhere.com
Jalankan make
perintah Anda sebagai berikut di shell SSH:
make; ncat --idle-timeout 1s localhost 10008
Bagaimana itu bekerja
Setelah make
perintah (berhasil atau tidak), ncat
perintah membuat koneksi ke port 10008 pada host jarak jauh, yang SSH meneruskan ke port 10009 pada mesin lokal Anda, di mana server Anda mendengarkan dan akan memainkan suara saat koneksi dibuat. Setelah koneksi terjalin, kita tidak lagi membutuhkannya, jadi setelah itu ditutup --idle-timeout 1s
. Ini akan menampilkan prompt shell lagi alih-alih ncat
perintah "menggantung" , membuatnya jelas bahwa rantai perintah SSH Anda benar-benar selesai.
SSH reverse tunneling membuat pekerjaan ini terlepas dari semua router / firewall / NAT antara mesin lokal Anda dan mesin jarak jauh. (Kalau tidak, Anda harus mengatur aturan port forwarding di router Anda, atau memiliki mesin lokal yang terpapar ke Internet.)
Keamanan
Kami melakukannya ncat -l localhost 10009
untuk server, yang berarti server hanya mendengarkan antarmuka jaringan dengan alamat IP host lokal. Antarmuka loop lokal ini hanya memungkinkan koneksi dari mesin Anda sendiri (termasuk, dalam hal ini, mereka yang melakukan tunnel terbalik melalui SSH). Jadi, bahkan jika Anda tidak berada di belakang firewall, port 10009 Anda tidak terpapar pada siapa pun di Internet.