Gostaria de executar um programa remotamente (através do ssh), mas com o áudio indo para a máquina remota onde o programa realmente é executado. Isso normalmente funcionaria com o ALSA, mas o pulseaudio aparentemente verifica algum autenticador de sessão antes de permitir a conexão de um cliente.
Como tornar essa verificação menos rigorosa?
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
fonte
fonte
pax11publish -r
funciona no meu Ubuntu 19.10.Respostas:
No meu caso, o seguinte funcionou para mim:
fonte
O culpado é que o ssh não define o
DBUS_SESSION_BUS_ADDRESS
que é usado para se conectar ao Pulseaudio. Uma solução (com base nesta postagem ) foi adicionar as seguintes linhas às minhas~/.bashrc
, que são usadas ao conectar-se através do ssh:ele usa o PID do nautilus (pode ser necessário alterá-lo para obter algum processo que sempre é executado na sessão) e pesquisa suas variáveis de ambiente
DBUS_SESSION_BUS_ADDRESS
e exporta-o.Isso faz com que os programas conectados ao Pulse funcionem bem. Outros programas que se comunicam pela sessão também funcionam com o d-bus (como o audtool para conduzir audaciosamente a linha de comando).
fonte
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-)
porque pidof retorna processid e parent processid. Mas no meu caso, essa solução não funciona; Eu ainda sofro doconnection refused
problema.