如何通过SSH设置远程桌面共享?


Answers:


51

方法1:

这可以通过vino vnc服务器和remmina来实现(两者都是ubuntu的默认设置;如果没有通过运行进行安装sudo apt-get install remmina)。然后在终端提示下从本地计算机运行以下命令:

  1. ssh -Y gman@remote。使用受信任的X11转发,否则它将无法正常工作

  2. vino-preferences。它将打开vino-preferences。

    酒偏好

  3. 同时单击configure network automatically to accept connection但不要输入任何密码,其密码是base64编码的。然后单击关闭。然后运行:

    sudo -s
    
    export DISPLAY=:0.0
    
    xhost +
    
    /usr/lib/vino/vino-server & 
    

    它将启动vino服务器。

  4. 从服务器注销:

    xhost -
    
    Press CTRL+C twice
    
    exit
    
    exit
    
  5. 然后打开remminavnc在协议下选择。

    basic选项卡下,在server字段中输入服务器地址。

    在ssh选项卡上,单击enable ssh tunnel。在下ssh authentication,它可能是passwordpublic key

    偏爱偏好

    点击保存。然后双击连接名称(如图所示的家用桌面)开始浏览远程桌面。


方法2:

x11vnc是一台简单的VNC服务器,您无需弄乱Gnome设置或500个防火墙,只需将其安装x11vnc在所有计算机上即可(使用木偶或用于大规模控制的任何工具)。

然后从本地计算机运行:

ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"

显然交换user@host了远程计算机的用户名和主机名/ IP。

然后使用您选择的VNC客户端进行连接localhost:5900。SSH命令在远程计算机上启动vnc服务器,然后通过SSH隧道回退该端口。您不必打开任何端口(只要您可以使用SSH)。

如果您的计算机具有有趣的显示设置,则最好-display :0在SSH命令中保留该段。x11vnc然后将自动尝试找到正确的显示。


资料来源:askubuntu


如果您通过慢速ssh连接使用vncviewer,则您的命令应该看起来像vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(在Debian / Ubuntu上,查看器是来自tightvnc)或vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(在Red Hat / Fedora上,查看器是来自Tigervnc),其中Debian和Redhat的质量等级均为在0到9之间,其中9最好,但需要快速连接。
erik 2014年

@erik感谢您解释如何与vncviewer缓慢的连接配合使用。我个人而言,可能会QualityLevel=4 or 5因为0 qualitylevel(对256 colors我而言)太呆板而迟疑不决。
Khurshid Alam 2014年

1
您的“方法2”非常适合快速远程访问物理显示器,而无需任何特殊的永久设置。执行命令时,我需要按照错误消息中的说明添加-auth参数,但可以正常使用。谢谢!
Pierre

@gerky方法3是NoMachine,目前是最快且免费的(尽管不是开源的),并且也可以在android上工作
Aquarius Power

1
对于方法2,我必须以-auth guessroot用户身份使用和运行它。非常有帮助,谢谢!
鲍勃·卡尔森

9

解决方案概述

假设您已经OpenSSH Server在主机上设置了,则必须首先在主机上启用桌面控制。如果您可以首先在本地主机上启用桌面控制,请转到1a。如果必须首先在主机上远程启用桌面控制,请转至1b。

接下来,在客户端计算机上创建远程桌面客户端配置文件,以便通过SSH隧道连接到主机,并最终通过SSH隧道查看和控制主机的桌面。

1a。在本地启用主机的远程控制

在主机上执行以下操作:

vino-preferences
  • vino-preferences 也在Dash下 Desktop Sharing

在此处输入图片说明

  1. Allow other users to view your desktop
  2. Allow other users to control your desktop
  3. Require the user to enter this password
  4. 输入难以猜测的密码

1b。远程启用主机的远程控制

在客户端计算机上执行以下操作,替换123.123.12.3为主机的IP地址:

ssh -Y 123.123.12.3
  • -Y,启用受信任的X11转发。受信任的X11转发不受X11 SECURITY扩展控件的约束。

vino-preferences
  • vino-preferences 也在Dash下 Desktop Sharing

在此处输入图片说明

  1. Allow other users to view your desktop
  2. Allow other users to control your desktop
  3. Require the user to enter this password
  4. 输入难以猜测的密码

在客户端计算机上创建远程桌面客户端配置文件

在客户端计算机上执行以下操作:

remmina
  • remmina也在Dash下 Remmina Remote Desktop Client

Ctrl+ N或“连接”>“新建”

在此处输入图片说明

  1. 填写您的IP地址[123.123.12.3] Server
  2. 切换至SSH标签

在此处输入图片说明

  1. Enable SSH Tunnel
  2. 将您的桌面客户端指向您的非标准SSH端口
  3. 设置您的SSH Authentication <username>和模式
  4. 连接

查看和控制主机

在客户端计算机上,当询问您<username>的密码时,输入该密码以创建SSH隧道。当要求输入VNC密码时,输入您先前输入到主机中的密码。

如果在此步骤成功,则现在应该通过SSH隧道从客户端计算机查看和控制主机的桌面。


这似乎很全面,但是在主机上定义的自定义端口12345在哪里?
约翰T

我猜想您需要从某个地方的客户端运行ssh命令,例如:ssh -L 12345:localhost:5900 user @ server_ip,然后按照所述使用远程客户端。
约翰·T

3

我可以使用以下脚本从远程ssh连接设置全新的Ubuntu 16.04安装:

#!/ bin / bash
出口DISPLAY =:0
阅读-e -p“ VNC密码:” -i“ ubuntu”密码
dconf写入/ org / gnome / desktop / remote-access / enabled true
dconf写入/ org / gnome / desktop / remote-access / prompt-enabled false
dconf编写/ org / gnome / desktop / remote-access / authentication-methods“ ['vnc']”
dconf写入/ org / gnome / desktop / remote-access / require-encryption false
dconf写入/ org / gnome / desktop / remote-access / vnc-password \“ \'$(echo -n $ password | base64)\'\”
dconf转储/ org / gnome / desktop / remote-access /
sudo service lightdm重新启动

引号对于任何字符串设置(引号内的单个刻度)都很重要。为了使dconf能够写入,需要访问XWindows,因此这就是需要export DISPLAY部分的原因。我认为您在此之后仍然需要登录到实际的Ubuntu计算机上的桌面才能与VNC连接。只有转储命令可以确认所有设置都已生效,您实际上并不需要。

如果您想一直保持显示状态,可以选择执行以下操作:

dconf写入/ org / gnome / desktop / screensaver / lock-enabled false
dconf写入/ org / gnome / desktop / screensaver / ubuntu-lock-on-suspend false
dconf写入/ org / gnome / desktop / session / idle-delay“ uint32 0”

2
  1. 您可以使用ssh启动vnc会话
  2. Xnest与X11 forwording一起使用可远程启动会话并将其转发到当前计算机。(我不时与我的pi一起这样做)手册页

我这样使用Xnest

  • Xnest :1 -ac &
  • 然后 DISPLAY=:1 . /etc/X11/Xsession

0

如何在不转发X的情况下远程启动Vino服务器(仅命令行)

以共享桌面的用户身份登录远程计算机,并将端口5900转发到本地主机上的同一端口。使用PuTTY,可以在Connection / SSH / Tunnels中设置重定向。在命令行中,使用:

 ssh -L 5900:localhost:5900 user@remote-computer

安装vino-server如果尚未安装。例如:

sudo apt install vino

启用桌面共享(与第一行和第二行的显示编号匹配):

echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server

启动VNC查看器并连接到localhostVNC服务器地址。


得到了以下内容。似乎所有这些都假设您已经登录到GUI控制台? No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options

0

基于@Khurshid Alam的答案,我提供以下代码段:

ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost

  • 这是一个不需要任何交互的命令

  • 它使用端口转发创建SSH隧道,x11vnc以相当安全的方式启动,并启动和连接VNC查看器

  • 它在目标主机上需要x11vnc,但无需进一步配置

  • 它在您的PC上需要vinagre,但您可以为另一个VNC查看器轻松地对其进行更改

0

在服务器PC中。

  • 从终端打开“ vino-preferences”或使用破折号打开“桌面共享”。

酒偏好

在客户端PC中(要从中控制服务器UI的位置)。

  • 保留如下图所示的设置(在用户名和IP位置进行更改)。

*“基本”标签 *高级*标签 * SSH *标签

陷阱。

  • 当我尝试使用SSH从远程PC在服务器中设置vino-preferences时,它发生了更改,但未发生连接。我必须直接(而不是远程)在服务器计算机中执行此操作。我不知道这种行为的原因。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.