我可以远程从Windows访问Ubuntu吗?

我在我的工作电脑上安装了Ubuntu。我想知道是否可以从另一台安装了Windows的电脑上访问它。如果可以的话,你能给我提供一个逐步指南吗?

1你可以问一下你们的IT部门是否安装了安全外壳(secure shell),然后使用PuTTY连接到你的工作电脑。 - Sergiy Kolodyazhnyy
1已添加了一个答案,请试一试。 - Faizan Akram Dar
1你可以使用以下任何一个。
  1. PuTTY
  2. VNC
- Novice
这是工作电脑吗?你的工作允许远程连接吗?有防火墙吗? - damien
1可以的。查看这个问题的第一个答案,链接如下。这是最简单和最快的解决方案。 我亲自测试过了。http://askubuntu.com/questions/477947/what-do-i-need-for-remotely-accessing-my-ubuntu-14-04-desktop - Ubuntuser
有人现在有任何相关的更新吗?Ubuntu(22.04.2)已经内置了桌面共享解决方案。我仍然无法在同一个简单的家庭网络中通过RDP连接使Windows PC和Ubuntu之间的连接工作。 - Paul Eden
4个回答

是的,你可以远程从Windows访问Ubuntu。
取自这篇文章

Follow these steps :

Step 1 – Install xRDP

Open Terminal (Crtl+Alt+T) and execute the following commands:

sudo apt-get update
sudo apt-get install xrdp

Step 2 – Install XFCE4 ( Unity doesn't seem to support xRDP in Ubuntu 14.04; although, in Ubuntu 12.04 it was supported ). That's why we install Xfce4.

sudo apt-get install xfce4

Step 3 – Configure xRDP

In this step, we modify two files to make sure xRDP uses Xfce4. First we need to create, or edit, our .xsession file in our home directory. We can either use nano or simply redirect an echo statement (easier):

echo xfce4-session > ~/.xsession

The second file we need to edit is the startup file for xRDP, so it will start Xfce4.

sudo nano /etc/xrdp/startwm.sh

The content should look like this (pay attention to the last line and ignore . /etc/X11/Xsession):

#!/bin/sh

if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi

startxfce4

Step 4 – Restart xRDP

To make all these changes effective, restart xRDP as such:

sudo service xrdp restart

Testing your xRDP connection

On the computer that will remotely control your Ubuntu machine, start you RDP client. Windows comes standard with a Remote Desktop client (mstsc.exe – you can start it from a command prompt, or find the shortcut to Remote Desktop under Accessories). Or Search 'remote' in start (Windows 7) Or 'remote' in search box in Windows 8.

Remote Desktop Connection

Whichever client you use, most will work with either the computer network name or IP address of your Ubuntu machine.

To find the IP address on your Ubuntu box, type:

hostname -I

(note: this is a capital “i”)

Enter IP address of your Ubuntu machine. For example:

enter image description here

Depending on your RDP client capabilities and settings (for example: Microsoft RDP Client allows automatic login), you might or might not see the login screen. Here we enter our Ubuntu username and password and click “OK”

xRDP – Login screen

You are done,enjoy

RDP – Your Ubuntu xfce4 desktop

附言:评论中提到了一些好的观点,所以我想总结一下。

  • 如果你想从外部网络访问Ubuntu,你需要在工作中的Ubuntu拥有自己的合适的互联网IP地址-这是一个相当不太可能的情况。要使其正常工作,你需要工作地点的外部可见地址,并且在路由器上设置端口转发,将传入的RDP请求定向到你的工作计算机。(Mark Williams

  • 要使用Ubuntu MATE桌面meta-session,请将startwm.sh中的最后一行startxfce4替换为mate-session。(Frank N

  • 您可以使用实际的机器名称(通过键入hostname)而不是IP地址,因为在未来的会话中,动态IP地址可能更加稳定。(Frank N


8如果OP的意思是从外部访问,那么很可能会遇到问题。你的例子使用了一个保留给内部网络的192.168.1.*地址,它无法跨越互联网。你需要确保你的工作用Ubuntu电脑有自己的合适的互联网IP地址,但这种情况发生的可能性相当小。要使其正常工作,你需要知道'work'的外部可见地址,并在路由器上设置端口转发,将传入的RDP请求定向到你的工作电脑。如果在网络内部,这样做就没问题了。 - Mark Williams
5我在家里有一台Ubuntu服务器和一台Windows机器,我正在尝试将后者连接到前者。我按照上面的说明进行操作,但是在我登录xrdp之后,我只能看到一个对话框,上面写着“Connecting to sesman ip 127.0.0.1 port 3350”,还有一个“确定”按钮,然后就没有任何反应了。你有什么想法为什么会这样? - Yuval
1请提供文本:Ubuntu服务器和Windows是否在同一网络上?我的意思是您是在本地连接它们还是通过互联网连接?如果两个系统都在同一局域网中,请像上面所示,在Windows机器上添加您的服务器的IP地址,这两个系统的地址可能类似于192.xxx.xxx.xxx。如果您是通过互联网连接,则需要添加远程机器的IP地址并在路由器上允许端口转发,请搜索谷歌了解“端口转发”。 - Faizan Akram Dar
2提示:要使用Ubuntu MATE桌面元会话,请将startwm.sh中的最后一行startxfce4替换为mate-session - Frank N
2使用您实际的机器名称(通过键入“hostname”)而不是IP地址,可能在未来的会话中对动态IP更加稳定。 - Frank N
其他都很好,但是我对剪贴板的工作感到绝望... ➝ https://www.mankier.com/5/xrdp.ini#Channels ?!? - Frank N
我输入了xRDP的凭据 - 它显示了连接信息。但是屏幕变成了空白,只有一个'X'光标标记,然后突然将我踢出来了。有什么线索吗? - Gaurav Arora
你想访问哪个版本的Ubuntu? - Faizan Akram Dar
1@GauravKumarArora 你可能忽略了与xfce4相关的一个步骤。 - Leo
1有人知道如何让剪贴板和音频/声音正常工作吗?另外,gnome-terminal功能失效,虽然可以用它来调用xterm,而xterm却运行良好。 - Leo
从英语翻译成中文。仅返回翻译的文本:复制自:http://www.tweaking4all.com/software/linux-software/use-xrdp-remote-access-ubuntu-14-04/ - devprashant
xrdp在启动时不会自动启动,因此请确保在启动时运行以下命令:service xrdp start的脚本。 - xinthose
我输入了用户名和密码,然后就出现了一个带有鼠标指针的蓝屏,除此之外什么都没有。你有什么想法吗? - David Portabella
@DavidPortabella 你是想连接哪个版本的Ubuntu和Windows? - Faizan Akram Dar
最新的Ubuntu Xenial版本。关于Windows,我在OSX上使用一个RDP客户端,但这并不重要。 - David Portabella
这篇文章以非常简单的方式解释了整个过程,无需安装任何额外的应用程序。 http://www.makeuseof.com/tag/ubuntu-remote-desktop-builtin-vnc-compatible-dead-easy/ - TMKasun
我成功地通过这个教程连接了VNC:https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-16-04 但是我得到了一个完全不同的桌面管理器。 - David Portabella
好的,我成功地使用默认的共享桌面连接上了,就像tmkasun说的那样。问题是我找不到偏好设置。运行命令"vino-preferences"显示了对话框,然后我可以启用它。 - David Portabella
1这在Ubuntu 16.04上如何运作? - Jus12
1提示:确保sesman正在运行,可以通过输入“/usr/sbin/xrdp-sesman”来检查。否则,您可能会看到一个带有大写字母X的空白屏幕。 - spunkpike
我不得不重新启动我的电脑才能使它正常工作。简单地重启服务并没有起作用。我还必须使用sesman-any和127.0.0.1作为IP地址,才能从RDP客户端使其正常工作。 - Michael Earls
我知道这是一个旧的帖子,所以也许在Ubuntu 16.04.3 LTS上的信息已经过时了,但我遇到了和Yuval一样的问题。Windows RDP似乎能够找到主机并成功连接,我会得到“登录到xrdp”的对话框,在那里我输入我的Ubuntu登录信息...但是然后只会出现一个“连接日志”对话框,上面写着“连接到sesman ip 127.0.0.1端口3350”。只有一个“确定”按钮,点击它会完全关闭连接。Windows和Ubuntu机器都在同一个内部网络(家庭)上。我可以使用PuTTY从同一台Windows机器上的ssh进入Ubuntu机器。为什么会这样呢? - Carl S
@FrankNocke:mate-session会提供目标计算机当前登录的会话吗? - Superole
抱歉,不知道。而且现在没有我的会话设置... @super - Frank N
很多年前,我第一次将一个Linux系统暴露在互联网上以进行远程连接(虽然它也是一个Web服务器),但没有硬件防火墙。那台机器在大约两周内就被黑客攻击了。所以,请务必不要忽视安全问题。 - devinbost
给那位点踩的用户,请您详细说明为什么要点踩呢? - Faizan Akram Dar
安装xfce成功后,当我运行echo xfce4-session >~/.xsession时,出现了以下错误:-bash: /home/longnx/.xsession: 没有那个文件或目录 https://imgur.com/a/AcCuAOv 我该怎么办?有什么关键词可以搜索以获得帮助? - Luke
1@luke 在 > 和 ~ 之间有一个空格,echo xfce4-session > ~/.xsession。如果不起作用,请使用 nano nano ~/.xsession 并将 echo xfce4-session 的内容复制到其中。 - Faizan Akram Dar
echo xfce4-session > ~/.xsession 此命令中的单个 > 符号意味着它将完全覆盖 ~/.xsession 文件。 - TheWanderer
允许端口3389 sudo ufw allow 3389/tcp - Kunal B.
谢谢你的回答。 你能给我们一些关于如何使用https://www.noip.com/的详细信息吗?这样我们就可以为Linux机器获得一个静态名称了。 提前感谢, Chris Pappas - Chris P
这在Xubuntu 14.04和16.04上运行正常。但在18.04上对我来说失败了。 - user628388
我在Ubuntu 18.04上遇到了连接问题——会话开始后立即退出。这个页面非常有帮助:https://github.com/neutrinolabs/xrdp/issues/1128 - Callidus

MobaXterm是一款功能强大的软件。

http://mobaxterm.mobatek.net/

在Windows上实现X服务器的免费软件。

此方法需要最少的设置,并且非常可靠。

您必须首先在Ubuntu上安装SSH服务器,例如通过物理访问机器上的键盘:

sudo apt install openssh-server

然后,在MobaXterm中的Windows上,你可以按照以下步骤操作:
1. 点击“会话”。 2. 选择“新会话”。 3. 选择“SSH”。
这样就可以进入一个SSH shell。
现在,如果你想从这个shell中启动一个程序,例如:
sudo apt install x11-apps
xeyes

xeyes 以一个独立的本地 Windows 窗口打开。

一个令人讨厌的问题是,如果你在工作时打开了窗口,然后回到家,你必须启动一个新的应用实例,而且你看不到已经打开的窗口。这一点更加令人讨厌的是那些只能在单窗口模式下工作的应用程序,比如浏览器:你将不得不搜索如何强制启动一个新实例,然后你将有两个实例同时运行。

在 Windows 10 和 Ubuntu 19.10 上通过 MobaXterm v12.4 在本地网络上进行了测试:

  • xeyes 7.7:移动得相当快,但你必须悬停在窗口本身上
  • Firefox 74.0:页面滚动相当缓慢接近无法使用,这样我肯定不会是一个满意的用户
  • Eclipse 2020-03:出乎意料地工作得很好,我能感觉到一点延迟,但非常小,即使在滚动时,试着在YouTube上观看视频也会导致它不响应
  • Chromium 79:无法打开,错误信息:"MoTTY X11代理:不支持的授权协议",请参考:https://superuser.com/questions/1111900/how-to-fix-mobaxterm-x11-proxy-unsupported-authorisation-protocol

这里是一张Windows截图,显示MobaXterm运行在左上角,并且两个程序(xeyes和firefox)在Ubuntu远程上运行,但显示为独立的本机Windows窗口!

enter image description here

MobaXterm X服务器的替代方案

我还没有尝试过这些,但行为应该类似于MobaXterm吧?希望我们能找到一个好的开源替代方案:

xrdp

提到于:https://askubuntu.com/a/592544/52975

我只想确认一下,在将Windows 10转换为Ubuntu 19.10时,并不需要像那个答案中提到的那样触碰一些配置文件,否则你只会得到一个黑屏:通过xrdp登录时出现空白桌面
此外,RDP是一种专有的微软协议,这让人感到遗憾:https://en.wikipedia.org/wiki/Remote_Desktop_Protocol 但它似乎只发送最少量的信息,而不像VNC那样发送图像:https://superuser.com/questions/32495/whats-the-difference-between-rdp-vs-vncVNC 我尝试了以下程序,但它们将桌面作为视频发送,这导致了不可接受的屏幕分辨率损失/鼠标不准确/网络带宽问题,如果你在外地的话。
服务器(在Ubuntu上运行):
Vino。已预装,但与某些可用的Windows客户端存在兼容性问题:Gnome 3.10共享桌面---如何配置VNC的安全类型? 客户端(在Windows上运行):
TigerVNC
PuTTY

https://www.chiark.greenend.org.uk/~sgtatham/putty/

如果你只想要一个通过SSH连接的文本终端,那么这是最佳解决方案。
首先,在Windows上安装PuTTY,通常可以从其官方网站下载。
在Ubuntu上,安装SSH服务器:
sudo apt install openssh-server

然后你只需打开PuTTY,告诉它Ubuntu的IP地址并通过SSH连接,这样就可以在Ubuntu内部获得一个终端。
PuTTY非常方便,因为它将xterm仿真器、SSH/telnet和其他协议集成在一个软件包中。
接下来,你还想在Ubuntu上安装并使用tmux,并在从Windows通过PuTTY连接时使用tmux attach命令,如https://unix.stackexchange.com/questions/22781/how-to-recover-a-shell-after-a-disconnection所述。这样你就可以:
- 在工作和家中使用完全相同的终端。是的,如果你在任何一台机器上输入内容,终端窗口会实时更新在另一台机器上!服务器的魔力! - 如果连接断开,不会丢失任何会话。
这太棒了!然而,环境变量中有一些令人讨厌的故障,特别是`DISPLAY`:https://unix.stackexchange.com/questions/75681/why-do-i-have-to-re-set-env-vars-in-tmux-when-i-re-attach 你还会想要减小默认的巨大字体大小:Increase font size of putty 如何在PuTTY中复制粘贴:https://superuser.com/questions/180043/how-do-i-paste-the-windows-clipboard-into-my-putty-session-using-only-the-keybo 然后,你可以直接在本机的Windows浏览器上打开所需的网页。如果你只需要使用Vim和浏览器完成工作,PuTTY绝对是最佳选择。我在日常开发中唯一遗憾的是没有Eclipse。

vscode和其他支持SSH的IDE

如果你是一名程序员,你已经知道这个,但我还是要说一下。

使用vscode,你可以仅通过SSH轻松设置远程vscode服务器,从而可以:

  • 浏览、编辑和下载文件和目录
  • 获取一个SSH shell

两者之间有完美的集成,例如在SSH终端路径上按Ctrl + 单击会在编辑器中打开所点击的文件。

从某种意义上说,这应该满足你所有非GUI应用程序访问的需求。



好的!因为它还支持按需桌面共享/远程支持(请参见)。 - tanius
虽然比xrdp要简单得多,但这种方法对于处理器和内存有限的树莓派来说有点资源密集。不过这是所有方法中最容易的。 - jahajee.com