Me gustaría ejecutar un programa de forma remota (a través de ssh) pero con audio yendo a la máquina remota donde realmente se ejecuta el programa. Esto normalmente funcionaría con ALSA, pero pulseaudio aparentemente verifica algunos autenticadores de sesión antes de permitir la conexión de un cliente.
¿Cómo hacer que esta verificación sea menos estricta?
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
fuente
fuente
pax11publish -r
funciona en mi Ubuntu 19.10.Respuestas:
En mi caso, lo siguiente funcionó para mí:
fuente
El culpable es que ssh no establece
DBUS_SESSION_BUS_ADDRESS
cuál se usa para conectarse a Pulseaudio. Una solución (basada en esta publicación ) fue agregar las siguientes líneas a my~/.bashrc
, que se usan al conectarse a través de ssh:utiliza el PID de nautilus (puede que tenga que cambiar eso para obtener algún proceso que siempre se ejecuta en la sesión) y busca sus variables de entorno
DBUS_SESSION_BUS_ADDRESS
y lo exporta.Esto hace que los programas que se conectan a Pulse funcionen bien. Otros programas que se comunican a través de la sesión d-bus también funcionan (como audtool para conducir audazmente por la línea de comandos).
fuente
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-)
dado que pidof devuelve tanto processid como parent processid. Pero en mi caso, esta solución no funciona; Todavía sufro elconnection refused
problema.