Я хотел бы запустить программу удаленно (через ssh), но со звуком, идущим на удаленную машину, где программа фактически выполняется. Обычно это работает с ALSA, но pulseaudio, по-видимому, проверяет некоторую аутентификацию сеанса перед тем, как разрешить соединение от клиента.
Как сделать эту проверку менее строгой?
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
источник
источник
pax11publish -r
работает на моем Ubuntu 19.10.Ответы:
В моем случае у меня сработало следующее:
источник
Виновником является то, что ssh не устанавливает,
DBUS_SESSION_BUS_ADDRESS
который используется для подключения к Pulseaudio. Решением (на основе этого поста ) было добавить следующие строки в my~/.bashrc
, которые используются при подключении через ssh:он использует PID nautilus (вам может потребоваться изменить его, чтобы получить какой-то процесс, который всегда выполняется в сеансе), и ищет переменные своего окружения
DBUS_SESSION_BUS_ADDRESS
и экспортирует его.Это делает программы, подключающиеся к Pulse, работают нормально. Другие программы, взаимодействующие по сеансу d-bus, также работают (например, audtool для управления смелыми через командную строку).
источник
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-)
так как pidof возвращает и processid, и родительский processid. Но в моем случае это решение не работает; Я все еще страдаю отconnection refused
проблемы.