Saya ingin menjalankan program dari jarak jauh (melalui ssh) tetapi dengan audio pergi ke mesin jarak jauh di mana program sebenarnya berjalan. Ini biasanya bekerja dengan ALSA, tetapi pulseaudio tampaknya memeriksa beberapa autentikator sesi sebelum mengizinkan koneksi dari klien.
Bagaimana cara membuat pemeriksaan ini tidak terlalu ketat?
local: $ ssh remote # remote is running pulseaudio and has sound hardware
remote:$ paplay something.wav
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
remote:$ audacious something.mp3 # opens on local's X11 display
pulseaudio: Failed to connect to server: Connection refused
pulseaudio: Failed to connect to server: Connection refused
ssh
pulseaudio
eudoxos
sumber
sumber
pax11publish -r
bekerja di Ubuntu 19.10 saya.Jawaban:
Dalam kasus saya, berikut ini bekerja untuk saya:
sumber
Penyebabnya adalah ssh tidak mengatur
DBUS_SESSION_BUS_ADDRESS
yang digunakan untuk terhubung ke Pulseaudio. Solusi (berdasarkan pada posting ini ) adalah menambahkan baris berikut ke my~/.bashrc
, yang digunakan saat menghubungkan over ssh:ia menggunakan PID nautilus (Anda mungkin perlu mengubahnya sehingga untuk mendapatkan beberapa proses yang selalu berjalan di sesi) dan mencari variabel lingkungannya untuk
DBUS_SESSION_BUS_ADDRESS
dan mengekspornya.Ini membuat program yang terhubung ke Pulse berjalan dengan baik. Program lain yang berkomunikasi melalui sesi d-bus juga berfungsi (seperti audtool untuk mengemudi dengan berani melalui baris perintah).
sumber
export DBUS_SESSION_BUS_ADDRESS=$(sudo cat /proc/$(pidof nautilus | cut -f1 -d" ")/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS | cut -d '=' -f2-)
sejak pidof mengembalikan baik processid dan parent processid. Tetapi dalam kasus saya, solusi ini tidak bekerja; Saya masih menderitaconnection refused
masalah.