无需开启RDP会话,如何通过PuTTY的SSH连接实现Ubuntu主机音频播放?
无需开启RDP会话,如何通过PuTTY的SSH连接实现Ubuntu主机音频播放?
这问题我之前帮朋友排查过,核心原因其实是纯SSH登录时,Ubuntu默认不会启动PulseAudio服务,而RDP会话会自动拉起带图形环境的用户会话,顺带启动了PulseAudio,这时候SSH就能蹭上这个已运行的服务。要不用RDP也能让SSH出声音,咱们可以从配置PulseAudio自启动+端口转发入手,一步步来:
一、先让Ubuntu端的PulseAudio在纯SSH会话下能启动并被访问
确保PulseAudio能自动启动
编辑你的用户bash配置文件,让每次SSH登录时自动检查并启动PulseAudio:nano ~/.bashrc在文件末尾添加一行:
if [ -z "$(pgrep pulseaudio)" ]; then pulseaudio --start; fi保存退出后,执行
source ~/.bashrc让配置生效。配置PulseAudio允许本地TCP连接
编辑PulseAudio的用户配置文件:nano ~/.config/pulse/default.pa添加下面这行(如果已有类似行,确保参数正确):
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1这行的作用是让PulseAudio监听本地回环的TCP端口(默认4713),并且允许匿名访问(因为我们会通过SSH端口转发把这个端口映射到本地,安全性有保障)。
然后重启PulseAudio让配置生效:
pulseaudio -k && pulseaudio --start
二、配置PuTTY的端口转发
打开PuTTY后,按以下步骤设置:
- 在左侧导航栏找到 Connection > SSH > Tunnels
- 在「Source port」输入框填
4713(PulseAudio默认TCP端口),「Destination」填localhost:4713 - 点击「Add」按钮,你会看到转发规则出现在下方的列表里
- 回到主界面输入Ubuntu主机的IP和SSH端口,正常登录即可
三、Windows端配置(让音频播放到本地扬声器)
如果你想让Ubuntu端的音频输出到Windows本地的扬声器,需要在Windows上做这些:
- 下载并安装Windows版PulseAudio客户端
- 找到安装目录下的
pulse\etc\pulse\client.conf文件,用记事本打开 - 找到
default-server这一行,把它改成:default-server = 127.0.0.1:4713 - 启动Windows的PulseAudio服务:可以打开命令提示符,进入PulseAudio安装目录,执行
pulseaudio.exe --start
四、测试音频
现在在PuTTY的SSH终端里运行一个测试命令,比如播放系统自带的音频文件:
aplay /usr/share/sounds/alsa/Front_Center.wav
如果一切配置正确,你应该能在Windows本地听到声音了。
另外补充下:你之前试过的X11转发没用,是因为X11转发的音频依赖于图形会话的X服务器支持,而你要的是纯终端下的音频输出,所以那个方案不适用咱们这个场景。
备注:内容来源于stack exchange,提问作者N00B_141




