termux转发X桌面和音频

termux转发X桌面和音频,第1张

大部分内容引自网络,感谢相关作者。

这是最简单的方法,效率略低于adb转发。

手机proot安装系统完毕后,在容器系统中启动ssh服务器,PC端不能通过密码验证的原因是用户PAM验证,在 /etc/sshd_config 的配置文件中简单禁用PAM即可。同时保证 /dev/pts 目录的写入权限,sshd需要它。同时要知道termux只能自由使用8000以上端口,默认ssh端口是8022,登录同时转发X:

在较早时候,ssh转发音频很简单,只需要执行下列命令:

本质上,就是将音频输入设备(REMOTE)连接到音频输出设备(LOCAL),流块大小为1Kb。

当我们使用alsamixer命令时,按下F6键,我们可以看到系统拥有的所有声卡。

还可以使用下列命令:

如果还要获得其它设备的连接,就需要重新启动一个ssh会话:

或者使用ffmpeg:

hw:3 指要录音的设备(可以使用 arecord -l 命令得到,也可以使用设备名,使用 arecord -L 获得,获得系统默认设备 arecord -L | grep sysdefault )。

如果没有alsa支持,那么这么做:

plughw:3 同样由 arecord 找出来的。

mplayer也木有可以使用ffplay(只是ffmpeg的一部份):

现代发行版基本都使用PulseAudio来控制硬件设备,因此,当PulseAudio运行时,使用 plughw:2 会失败。一般情况下,使用PulseAudio默认的就可以了,可以采用 pavucontrol 命令选择输入源。

PC端配置Pulseaudio服务器,首先安装paprefs工具来配置网络音频访问,然后在服务端 /etc/pulse/defaultpa 文件中插入一行语句:

有些情况下,pulseaudio不读取默认文件,则需要手动载入模块。

可能需要打开防火墙相应(默认4713)端口。

可以通过以下命令查看运行的X Server桌面号:

传统上,X Server监听TCP 6000端口,可能需要再防火墙打开该端口,现在系统启动时加了 -nolisten tcp ,需要去掉这个选项。在使用gdm3的系统中,可以修改 /etc/gdm3/daemonconf 文件:
DisallowTCP=false ,然后重启gdm3。

客户端需要设置 $DISPLAY 变量,指向服务器的地址,例如:

出于一般的安全考虑,默认不允许直接访问X,需要使用 xhost 命令添加客户端,例如:

由于上层存在不同的窗口管理器,可能还需要修改相应的配置方式。

Xauth是半安全连接,远程服务器直接访问本地X Server会被阻止。因此需要设置Xauth。

Xauth显示规范采用了一种称为"magic cookie"的证书方式,客户端需要提交这个"cookie"给服务端。

Xauth默认配置使用环境变量 $XAUTHORITY 指向的文件或者用户目录下的 Xauthority 文件。

如果要编辑指定Xauthority文件,则执行 xauth -f xxx 命令。

另外一种ssh方式混合秘钥:

检查是否能显示于本地机器:
xclock -display IP:桌面号

默认情况下,XServer关闭tcp端口,因此需要重开一个Xorg。

linuxmint mate下:

按ctrl+alt+f1打开一个tty,启动一个Xorg:

X其实是一个Xorg命令的封装脚本。

按ctrl+alt+f7回已登录桌面,虚拟终端下启动一个mate-session:

这里要使用dbus作为进程间通信服务,否则无法正常启动mate桌面。

如果没有错误,按ctrl+alt+f8就可以看到mate桌面已经启动了。

打开新开桌面的虚拟终端,基于IP验证登录:

如需重启后仍然生效,需要写入/etc/X[n]hosts文件,其中n为桌面号。

查看是否监听了6001端口,如果桌面号是2,XServer会在6002端口监听。以此类推。

可以看到XServer对6001端口监听了。

最后在防火墙打开6001端口,允许数据进入。

最后在客户机正常设置$DISPLAY变量即可。

如果不新开X,那么需要确定使用的桌面管理器,比如lightdm和gdm,如果是lightdm,修改 /etc/lightdm 下X启动相关配置文件,其中加入字段:

查看使用什么窗口管理器,可以查看下X服务器的进程:

gdm则添加如下字段:

然后可能还要修改 /etc/X11/xinit/xserverrc :

默认情况下监听6000端口。

还有一种xhost关闭安全验证的简写方法:

即默认允许所有客户机访问。

X-Server与X-Client之间的远程通信使用TCP方式, 在实际测试中发现X-Server和X-Client在同一个局域网内才能连接成功, X-Client连接NAT后的X-Server的话是不能成功的 看来这协议是’NAT敏感’的 解决方法通常是使用SSH隧道。

还有一个内容, 那就是XDM(X-Display-Manager), 他使用的是XDMCP协议, 走UDP177端口 以后有机会再补充这块内容。

为解决刚说的’NAT敏感’问题 我们常常使用SSH隧道上的端口转发功能来绕过问题。

远端上的X-Client应用程序访问其本地SSH-Server开启的转发监听端口PORT1, SSH-Server将其在Port1在监听接入的数据通过已经建立好连接的SSH隧道转发到我们本地的SSH-Client, SSH-Client再将数据转发到本地X-Server所监听的TCP端口PORT2。

以PORT1为6010, PORT2为6002为例, 其SSH隧道建立及开启转发功能的连接命令为:

ssh有个简洁的-X参数能自动根据环境配置以上转发参数及远端SSH终端的DISPLAY环境变量 可以自行翻阅文档查看详情,这功能需要在SSH-Server开启’X11 Forwarding’选项,
这样一来就避开了’NAT敏感’的问题, 从X-Client看来他只是访问本地的X-Server, 从X-Server看来他只是接入本地的X-Client, 所有X层面上看到的IP都是127001。

同时这个做法避开了X-Security的xauth远程主机验证,因为都认为是本地主机的访问,只需允许本地访问即可。

大概是速度最快的方式。

所谓UDS,即“Unix domain socket”,即IPC,socket原本用于网络通讯,后来在其框架构建了一种IPC(inter-process communication),即称UDS。

NAMESPACE_RESERVED :就是initc中/dev/socket/下建立的socket文件。

NAMESPACE_FILESYSTEM:普通命名空间。

NAMESPACE_ABSTRACT:虚拟命名空间。

adb reverse 使用方法查阅帮助文档即可。

显示端执行:

然后远程端设置好 DISPLAY 的桌面号,即可正常显示:

有疑问可参考前面描述的内容。

效率最高,整个手机都可以镜像投屏,树莓派可以使用lazycast,延迟可控制在300毫秒。pc端scrcpy(非miracast),低传输率下100毫米延迟。其它实现没有使用过。

VMware中安装Centos虚拟机后,屏幕分辨率通常默认设置为800×600。并且不能通过“屏幕分辨率首选项”窗口(系统->首选项->屏幕分辨率)进行设置。
一般情况下,用户可以通过安装VMware Tools来解决这个问题,不过方法也并非只此一种:
1) 打开“显示设置”窗口(系统->管理->显示),打开“硬件”选项卡,点击“显示器类型”中的“配置”按钮;
2) 在d出的“显示器”窗口中选择合适的显示型号,例如:General LCD Display -> LCD Panel
1280×1024;
3) 一路点击“确定”后回到“显示设置”窗口,打开“设置”选项卡,然后在“分辨率”标签处选择合适的分辨率;
4) 点击“确定”按钮后,系统将提示重新启动X服务器,方法是:打开终端执行命令“gdm-restart”;
服务器重启后,用户就可以通过“屏幕分辨率首选项”窗口调整Linux虚拟机屏幕分辨率了。

1、打开电脑,然后打开电脑安装好的虚拟机系统,可以看到桌面分辨率较小,旁边还有很大的空间;

2、在虚拟机桌面上找到并点击左上角桌面,然后找到并点击系统工具选项,然后设置选项;

3、之后会进入到一个新的页面,在页面中找到并打开下面选择设备选项;

4、在应用程序的页面中找到并进入到设置页面中,然后在显示中调节右侧的分辨率大小就可以;

5、这时就会出现很多选项的分辨率选项,然后选择一个合适的,屏占比就会大点,用习惯了大的,小屏幕感觉不习惯,符合桌面大小的即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13480993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-15
下一篇 2023-08-15

发表评论

登录后才能评论

评论列表(0条)

保存