我在 Ubuntu 服务器上运行一个无头 VM(一个旧的 WinXP)。我有一段时间没有使用它,我刚刚启动它,但它不会通过 ssh 隧道连接。
我像这样在服务器上启动虚拟机:
client $ ssh -CYL 3389:localhost:3389 dargaud@server
server $ VBoxManage startvm "OldXP" --type headless
server $ VBoxManage list runningvms
"OldXP" {ebb9b585-84b3-4057-8fc7-e3a43735abcd}
server $ VBoxManage list -l runningvms
...
VRDE: enabled (Address 0.0.0.0, Ports 3389, MultiConn: on, ReuseSingleConn: off, Authentication type: null)
然后我尝试启动rdp:
client $ krdc rdp://localhost:3389
上面在远程服务器上启动了一个灰色的 X11 窗口,其中运行着一个没有装饰的 firefox。
client $ rdesktop localhost
上面打开了一个 [login to xrdp] 远程框,要求输入模块、用户名和密码。
我觉得 Windows VM 不再监听 RDP,但上面的状态似乎给出了正确的配置,而且:
$ sudo lsof -n | grep :3389
xrdp 2632 xrdp 6u IPv4 26202 0t0 TCP *:3389 (LISTEN)
VBoxHeadl 20918 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
nspr-1 20918 20920 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
nspr-2 20918 20921 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
VBoxSVCWa 20918 20923 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
TimerLR 20918 20925 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
MainHGCMt 20918 20927 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
VRDP-IN 20918 20928 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
VRDP-OUT 20918 20929 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
remote 20918 20930 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
EMT-0 20918 20931 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
EMT-1 20918 20932 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
ShClipboa 20918 20933 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
DragAndDr 20918 20934 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
GuestProp 20918 20935 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
GSTPROPNT 20918 20936 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
GuestCont 20918 20937 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
Timer 20918 20938 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
PDMNsTx 20918 20939 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
ShFolders 20918 20940 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
ATA-0 20918 20941 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
ATA-1 20918 20942 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
INTNET-RE 20918 20943 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
INTNET-XM 20918 20944 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
OhciFrame 20918 20946 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
ACPI\x20P 20918 20947 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
USBDevIo- 20918 20948 dargaud 19u IPv6 13856839 0t0 TCP *:3389 (LISTEN)
如果我杀死虚拟机,3389 上就没有更多的侦听器了,所以这不是冲突。
愚蠢的我,我没有注意到 lsof 的第一行:xrdp 服务器在同一个端口上运行。
service xrdp stop
然后重新启动虚拟机解决了它。