如何通过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. 然后打开remmina。vnc在协议下选择。

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

    在ssh选项卡上,单击enable ssh tunnel。在下ssh authentication,它可能是password或public 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. 输入难以猜测的密码
  5. 关

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. 输入难以猜测的密码
  5. 关

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

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

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.