Chương trình chạy trong SSH truy cập pulseaudio trên máy nơi nó chạy


10

Tôi muốn chạy một chương trình từ xa (thông qua ssh) nhưng với âm thanh sẽ đến máy từ xa nơi chương trình thực sự chạy. Điều này thường hoạt động với ALSA, nhưng rõ ràng pulseaudio sẽ kiểm tra một số trình xác thực phiên trước khi cho phép kết nối từ máy khách.

Làm thế nào để kiểm tra này ít nghiêm ngặt hơn?

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

Kiểm tra câu trả lời của Hans để cập nhật. pax11publish -rhoạt động trên Ubuntu 19.10 của tôi.
Stephen Boston

Câu trả lời:


5

Trong trường hợp của tôi, những điều sau đây làm việc cho tôi:

pax11publish -r

2

Thủ phạm là ssh không đặt DBUS_SESSION_BUS_ADDRESSmà được sử dụng để kết nối với Pulseaudio. Một giải pháp (dựa trên bài đăng này ) là thêm các dòng sau vào của tôi ~/.bashrc, được sử dụng khi kết nối qua ssh:

if [[ -n $SSH_CLIENT ]]; then
    export DBUS_SESSION_BUS_ADDRESS=`cat /proc/$(pidof nautilus)/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS | cut -d '=' -f2-`
fi

nó sử dụng PID của nautilus (bạn có thể cần phải thay đổi điều đó để có được một số quy trình luôn chạy trong phiên) và tìm kiếm các biến môi trường của nó để tìm DBUS_SESSION_BUS_ADDRESSvà xuất nó.

Điều này làm cho các chương trình kết nối với Pulse chạy tốt. Các chương trình khác giao tiếp qua phiên d-bus cũng hoạt động (như audtool để lái xe táo bạo trên dòng lệnh).


Trên Ubuntu 16.04, lệnh phải là 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-)do pidof trả về cả processid và processid cha. Nhưng trong trường hợp của tôi, giải pháp này không hoạt động; Tôi vẫn bị connection refusedvấn đề.
Hans Deragon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.