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

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

有没有办法通过 SSH 查看(和控制)远程桌面?我无法物理访问远程主机。

答案1

方法 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. 然后打开雷米纳vnc.在协议下选择。

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

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

    偏爱

    点击保存。然后双击连接名称(如图中的home-desktop)开始浏览远程桌面。


方法 2:

x11vnc是一个简单的 VNC 服务器,您不必处理 Gnome 设置或 500 个防火墙,只需安装x11vnc在您的所有计算机上(使用 puppet 或任何您用于大规模控制的工具)。

然后从本地计算机运行:

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

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

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

如果您的计算机的显示设置很奇怪,您最好省略-display :0SSH 命令中的该段。x11vnc然后会自动尝试找到正确的显示。


来源:问库本图

答案2

解决方案概述

假设您已经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 隧道从客户端计算机查看和控制主机的桌面。

答案3

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

/bin/bash #!/bin/bash
导出显示=: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 服务 lightdm 重启

对于任何字符串设置,引号都很重要(引号内的单勾)。要使 dconf 能够写入,它需要访问 XWindows,因此这就是需要导出 DISPLAY 部分的原因。我认为您仍然需要登录到实际 Ubuntu 机器上的桌面才能在此之后连接 VNC。dump 命令只是用来确认所有设置都生效,您实际上并不需要它。

如果您想始终保持显示状态,您可能需要这样做:

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”

答案4

如何远程启动 Vino 服务器而不转发 X(仅限命令行)

以将共享其桌面的用户身份登录远程计算机,并将端口 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 服务器地址。

相关内容