如何通过Kali Linux中转,从Windows 10笔记本远程桌面访问局域网内的Windows XP并实现可视化交互
嘿,我完全理解你现在的困惑——毕竟这确实是新手接触远程交互时容易卡壳的场景。先给你拆解下遇到的错误:UI(error): ui_init(), failed to open X11 display: 这个报错的核心原因是你连接的公网Kali是“无头”状态(没有图形界面环境,也就是X11服务器),而且你从Windows 10 SSH过去时,也没把本地的图形显示能力转发过去,导致rdesktop没法把XP的画面渲染出来给你看。
下面给你两种非常实用的方案,都是适合新手操作的,你可以根据自己的情况选择:
方案一:直接用无root权限的公网Kali做中转(推荐,无需额外软件)
这个方案不需要在Kali上运行任何图形程序,而是利用SSH端口转发把XP的远程桌面端口映射到你Windows 10本地,直接用Windows自带的远程桌面工具连接就行,操作最简单:
关闭之前的SSH连接,重新从Windows 10的命令提示符(或PowerShell)连接公网Kali,输入这条命令:
ssh -L 33890:<Windows_XP_LAN_IP>:3389 你的Kali用户名@Kali公网IP给你解释下参数:
-L表示本地端口转发33890是你Windows 10本地的空闲端口(可以换成其他没被占用的数字,比如33891)<Windows_XP_LAN_IP>替换成XP在局域网里的IP地址(比如192.168.1.100)3389是Windows远程桌面的默认端口(如果你之前改了XP的RDP端口,要换成对应的数字)
保持这个SSH连接窗口不要关闭(关掉的话转发就中断了),然后打开Windows 10自带的「远程桌面连接」:
- 可以直接在开始菜单搜「mstsc」打开
- 在「计算机」输入框里填
localhost:33890(就是你刚才设置的本地端口) - 点击连接,输入你之前拿到的XP管理员用户名和密码,就能直接看到并操作XP的桌面了!
方案二:用有root权限的内网Kali中转(可选)
如果方案一遇到问题,或者你想尝试用这个有root权限的内网Kali,同样推荐用端口转发的方式,或者也可以用X11图形转发(需要装小工具):
方式A:依然用端口转发(无需图形环境)
先从Windows 10连接公网Kali,同时转发本地端口到内网Kali的SSH端口:
ssh -L 33891:<内网Kali的LAN_IP>:22 你的公网Kali用户名@Kali公网IP33891是Windows本地的空闲端口<内网Kali的LAN_IP>是有root权限的Kali在局域网里的IP
打开另一个Windows命令提示符窗口,连接内网Kali,同时转发XP的RDP端口:
ssh -L 33890:<Windows_XP_LAN_IP>:3389 你的内网Kali用户名@localhost -p 33891和方案一一样,打开「远程桌面连接」,输入
localhost:33890,用XP的管理员账号密码连接即可。
方式B:用X11图形转发(需要装X服务器)
如果想用rdesktop直接在Kali上启动图形界面,需要在Windows 10上装一个X服务器工具(比如VcXsrv,免费好用):
- 下载并安装VcXsrv,启动时选择「Multiple windows」,后续步骤保持默认,最后勾选「Disable access control」(方便Kali连接),点击「Finish」启动。
- 在Windows 10的命令提示符里设置环境变量:
set DISPLAY=localhost:0 - 从Windows 10 SSH连接公网Kali,加上
-X参数开启X11转发:ssh -X 你的公网Kali用户名@Kali公网IP - 从公网Kali再SSH到内网有root的Kali,同样加
-X参数:ssh -X 你的内网Kali用户名@内网Kali的LAN_IP - 在内网Kali上运行
rdesktop命令:
这时候XP的桌面就会显示在你Windows 10的VcXsrv窗口里了。rdesktop -u <XP管理员用户名> -p <XP管理员密码> <Windows_XP_LAN_IP>
新手注意事项
- 所有SSH连接窗口都要保持打开,关闭的话端口转发或X11转发就会中断
- 如果你不确定端口是否被占用,可以在Windows命令提示符里用
netstat -ano | findstr 端口号检查 - 如果XP的远程桌面端口不是默认的3389,要把命令里的3389换成对应的端口号
备注:内容来源于stack exchange,提问作者hutonahill




