Ich möchte ein Programm remote (über ssh) ausführen, aber mit Audio auf den Remote-Computer, auf dem das Programm tatsächlich ausgeführt wird. Dies würde normalerweise mit ALSA funktionieren, aber pulseaudio überprüft anscheinend einen Sitzungsauthentifizierer, bevor die Verbindung von einem Client zugelassen wird.
Wie kann diese Prüfung weniger streng gestaltet werden?
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
quelle
quelle
pax11publish -r
funktioniert auf meinem Ubuntu 19.10.Antworten:
In meinem Fall hat Folgendes für mich funktioniert:
quelle
Der Schuldige ist, dass ssh nicht setzt,
DBUS_SESSION_BUS_ADDRESS
was verwendet wird, um sich mit Pulseaudio zu verbinden. Eine Lösung (basierend auf diesem Beitrag ) bestand darin, die folgenden Zeilen zu my hinzuzufügen~/.bashrc
, die beim Verbinden über ssh verwendet werden:Es verwendet die PID von nautilus (möglicherweise müssen Sie diese ändern, um einen Prozess zu erhalten, der immer in der Sitzung ausgeführt wird) und durchsucht seine Umgebungsvariablen nach
DBUS_SESSION_BUS_ADDRESS
und exportiert sie.Dadurch laufen Programme, die eine Verbindung zu Pulse herstellen, einwandfrei. Andere Programme, die über den D-Bus der Sitzung kommunizieren, funktionieren ebenfalls (z. B. Audtool zum kühnen Fahren über die Befehlszeile).
quelle
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-)
da pidof sowohl die Prozess-ID als auch die übergeordnete Prozess-ID zurückgibt. In meinem Fall funktioniert diese Lösung jedoch nicht. Ich leide immer noch unter demconnection refused
Problem.