SSH가 실행되는 시스템에서 펄스 오디오에 액세스하는 SSH에서 프로그램 실행


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

Hans가 업데이트에 대한 답변을 확인하십시오. pax11publish -r내 우분투 19.10에서 작동합니다.
Stephen Boston

답변:



2

범인은 ssh가 DBUS_SESSION_BUS_ADDRESSPulseaudio에 연결하는 데 사용되도록 설정하지 않았다는 것입니다 . 해결책 ( 이 게시물을 기반으로 한 )은 ~/.bashrcssh를 통해 연결할 때 사용되는 다음 행을 my에 추가하는 것입니다 .

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를 사용하고 (세션에서 항상 실행되는 일부 프로세스를 얻으려면 변경해야 할 수도 있음) 환경 변수를 검색 DBUS_SESSION_BUS_ADDRESS하고 내 보냅니다.

이렇게하면 Pulse에 연결된 프로그램이 제대로 작동합니다. 세션 d- 버스를 통해 통신하는 다른 프로그램도 작동합니다 ( 명령 줄을 통해 대담한 운전을위한 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와 parent processid를 모두 리턴하므로 명령이 있어야합니다 . 그러나 제 경우에는이 솔루션이 작동하지 않습니다. 나는 여전히 connection refused문제로 고통 받고 있습니다.
한스 데 라곤 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.