XRDP(在 WSL 发行版中)未连接到远程桌面

XRDP(在 WSL 发行版中)未连接到远程桌面

所以我制作了一个批处理文件。通过使用它,我在命令行(具体来说是 WSL)中打开一个程序。该程序接受一些输入。举一个具体的例子 - 我正在制作一个批处理文件,它运行wsl --distribution kali-linux然后sudo service xrdp start在该虚拟机上自动运行,以便我可以连接到它的桌面。但是当批处理文件运行 kali-linux 时,cmd 会执行:

┌──(user㉿DESKTOP-6SNGSF1)-[/mnt/c/Users/Saaransh Garg]
└─$

我想知道如何sudo service xrdp start向虚拟机发出命令?我认为这类似于向程序提供输入。

另外,我尝试过这样做:wsl -- sudo service xrdp start但是,当我尝试连接到虚拟机时,它显示“发生了内部错误”。我认为,由于 WSL 仍在开发中,这只是一个错误。所以我别无选择,只能通过 .bat 文件向 WSL 输入

至于设置,我在NetworkChuck 的方式,随后这是 David Bombal 的将端口更改为 3390。简而言之,我所做的是这样的-

  1. 从微软商店安装 kali,更新和升级 kali,安装 xfce 和 XRDP
  2. 按照视频中 8:50 处提到的 David Bombal 的步骤,使用其中提到的命令这里将端口更改为 3390

我想要做的是制作一个批处理文件,这样每当我运行它时,Kali Linux 就会连接到 RD。我的尝试:-

wsl --user root --distribution kali-linux --exec sh -c "service xrdp start"
mstsc /v:localhost:3390 /g:RDP 

笔记:

  1. 我正在使用 WSL v2

答案1

具体来说xrdp,请尝试:

wsl ~ -u root -e sh -c "nohup service xrdp start"

虽然 awsl -u root -e sh -c "command"适用于大多数命令(甚至大多数服务),但init.dfor 脚本xrdp似乎存在问题。我认为这是由于时间问题,其中 shell(拥有进程)在xrdp有机会分叉之前终止。 nohup只需确保完整的xrdpinit 脚本有机会在此之前运行即可。

这实际上不是一个 WSL 问题——如果你用 做类似的事情,就会看到同样的事情exec sh -c "sudo service xrdp start"

答案2

注意:这回答了最初提出的问题——如何将输入传递给 WSL 命令。但是,该问题随后被编辑,以将此答案添加到问题中并提出新问题。出于历史目的,将其留在这里。

尝试以下方法:

wsl --user root --distribution kali-linux --exec sh -c "service xrdp start" # long form options
wsl -u root -d kali-linux -e sh -c "service xrdp start" # short form

这应该可以工作。它以 root 身份运行发行版(以避免在 上使用密码sudo),并使用sh命令行执行(为了获得最快的执行时间并避免任何正常 shell 的启动脚本)service xrdp start

您可能还会考虑:

wsl -u root -d kali-linux -e sh -c "service xrdp status || service xrdp start"

在启动它之前,它会首先检查它是否正在运行。

从 CMD 进行替代调用:

echo service xrdp start | wsl -u root -d kali-linux -e sh

但在我看来,引用规则开始变得更加复杂。

相关内容