Программа запускается по SSH, получая доступ к pulseaudio на компьютере, на котором она работает


10

Я хотел бы запустить программу удаленно (через 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

Проверьте ответ Ганса для обновления. pax11publish -rработает на моем Ubuntu 19.10.
Стивен Бостон

Ответы:



2

Виновником является то, что ssh не устанавливает, DBUS_SESSION_BUS_ADDRESSкоторый используется для подключения к Pulseaudio. Решением (на основе этого поста ) было добавить следующие строки в my ~/.bashrc, которые используются при подключении через 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

он использует PID nautilus (вам может потребоваться изменить его, чтобы получить какой-то процесс, который всегда выполняется в сеансе), и ищет переменные своего окружения DBUS_SESSION_BUS_ADDRESSи экспортирует его.

Это делает программы, подключающиеся к Pulse, работают нормально. Другие программы, взаимодействующие по сеансу d-bus, также работают (например, audtool для управления смелыми через командную строку).


В Ubuntu 16.04 команда должна быть, 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проблемы.
Ханс Дерагон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.