Memutar suara di komputer lokal setelah perintah dalam koneksi SSH

Jawaban:

1

Anda dapat mengkonfigurasi PulseAudio untuk memungkinkan koneksi jaringan, kemudian menggunakan penerusan port ssh dan paplay -sdi sisi jarak jauh untuk mengirim audio kembali melalui koneksi ssh. Perhatikan bahwa audio mungkin tertunda atau gagap berdasarkan kesetiaan audio dan kecepatan koneksi.

Ignacio Vazquez-Abrams
sumber
1

Siapkan server primitif (misalnya, pada port 1234) yang memutar suara di komputer lokal ketika seseorang terhubung, dan meneruskan port itu ke server jauh.

Di mesin lokal:

nc -l -p 1234 -e "mplayer sound.ogg"

kemudian

ssh -L 1234:localhost:12345 [email protected]
make && nc localhost 12345

PS: Anda harus menggunakan ;alih-alih &&jika Anda ingin diberitahu bahkan ketika membuat gagal.

xzfc
sumber
1

(Ini adalah jawaban oleh @xzfc dengan beberapa koreksi.)

  1. Instal ncatdi mesin klien dan server Anda. Karena ncdalam distribusi biasa (Debian, Ubuntu) tidak memiliki opsi untuk mengeksekusi perintah ( -c/ -e) yang kita butuhkan.

    apt install nmap
    
  2. 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
    
  3. 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 [email protected]
    
  4. Jalankan makeperintah Anda sebagai berikut di shell SSH:

    make; ncat --idle-timeout 1s localhost 10008
    

Bagaimana itu bekerja

Setelah makeperintah (berhasil atau tidak), ncatperintah 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 ncatperintah "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 10009untuk 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.

tanius
sumber