问题描述
有没有办法通过SSH查看(和控制)远程桌面?我无法物理访问远程主机。
最佳解决思路
方法1:
这可以通过vino vnc server& remmina(默认使用ubuntu;如果不是通过运行sudo apt-get install remmina
安装它)。然后在终端提示符中从本地计算机运行以下命令:
-
ssh -Y gman@remote
。使用可信的X11转发,否则它不会工作 -
vino-preferences
。它将打开vino-preferences。 -
同时单击
configure network automatically to accept connection
。但是不要输入任何密码,它的base64编码。然后单击关闭。然后运行:sudo -s export DISPLAY=:0.0 xhost + /usr/lib/vino/vino-server &
它将启动vino服务器。
-
从服务器注销:
xhost - Press CTRL+C twice exit exit
-
然后打开remmina。根据协议选择
vnc
。在basic
选项卡下,将服务器地址放在server
字段中。在ssh选项卡上单击enable ssh tunnel
。在ssh authentication
下,它可以是password
或public key
:单击“保存”。然后双击connection-name(如图所示的home-desktop)开始浏览远程桌面。
方法2:
x11vnc
是一个简单的VNC服务器,你不必乱用Gnome设置或500防火墙,只需在你的所有计算机上安装x11vnc
(使用Puppet(木偶)或你用于mass-control的任何东西)。
然后从您的本地计算机运行:
ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"
显然,将user@host
换成远程计算机的用户名和主机名/IP。
然后使用您选择的VNC客户端连接到localhost:5900
。 SSH命令在远程计算机上启动vnc服务器,然后通过SSH隧道回传该端口。您不必打开任何端口(只要您已经可以SSH)。
如果您的计算机具有有趣的显示设置,则最好在SSH命令中取消-display :0
段。然后,x11vnc
将自动尝试找到正确的显示。
资料来源:askubuntu
次佳解决思路
解决方案概述
假设您已在主机上设置了OpenSSH Server
,则必须首先在主机上启用桌面控制。如果您可以先在本地启用主机上的桌面控制,请前往1a。如果必须首先在主机上远程启用桌面控制,请前往1b。
接下来,在客户端计算机上创建远程桌面客户端配置文件,以便通过SSH隧道连接到主机,并最终通过SSH隧道查看和控制主机的桌面。
1A。本地启用主机远程控制
在主机上执行以下操作:
vino-preferences
-
vino-preferences
也在Desktop Sharing
的Dash中
-
勾选
Allow other users to view your desktop
-
勾选
Allow other users to control your desktop
-
勾选
Require the user to enter this password
-
输入难以猜测的密码
-
关
1B。远程启用主机远程控制
在客户端计算机上执行以下操作,将123.123.12.3
替换为主机的IP地址:
ssh -Y 123.123.12.3
-
-Y,启用可信的X11转发。受信任的X11转发不受X11 SECURITY扩展控制的约束。
vino-preferences
-
vino-preferences
也在Desktop Sharing
的Dash中
-
勾选
Allow other users to view your desktop
-
勾选
Allow other users to control your desktop
-
勾选
Require the user to enter this password
-
输入难以猜测的密码
-
关
在客户端计算机上创建远程桌面客户端配置文
在客户端计算机上执行以下操作:
remmina
-
remmina也在
Remmina Remote Desktop Client
的Dash中
Ctrl
+ N
或连接>新
-
填写您的IP地址[123.123.12.3],其中显示
Server
-
切换到
SSH
选项卡
-
勾选
Enable SSH Tunnel
-
将桌面客户端指向non-standard SSH端口
-
设置您的
SSH Authentication
<username>
和模式 -
连
查看和控制主机
在客户端计算机上,当询问<username>
的密码时,输入它以创建SSH隧道。当询问VNC密码时,请输入先前输入主机的密码。
如果在此步骤成功,您现在应该通过SSH隧道从客户端计算机查看和控制主机的桌面。
第三种解决思路
-
您可以使用ssh启动vnc会话
-
使用
Xnest
和X11转发来远程启动会话并将其转发到您当前的计算机。 (我不时用我的pi做这个)man page
我这样使用Xnest
:
-
Xnest :1 -ac &
-
然后是
DISPLAY=:1 . /etc/X11/Xsession
第四种思路
我能够使用以下脚本从远程ssh连接设置新的Ubuntu 16.04安装:
#!/bin/bash
export DISPLAY=:0
read -e -p "VNC Password: " -i "ubuntu" password
dconf write /org/gnome/desktop/remote-access/enabled true
dconf write /org/gnome/desktop/remote-access/prompt-enabled false
dconf write /org/gnome/desktop/remote-access/authentication-methods "['vnc']"
dconf write /org/gnome/desktop/remote-access/require-encryption false
dconf write /org/gnome/desktop/remote-access/vnc-password \"\'$(echo -n $password | base64)\'\"
dconf dump /org/gnome/desktop/remote-access/
sudo service lightdm restart
引用对于任何字符串设置(引号内的单个刻度)都很重要。要使dconf能够编写它需要访问XWindows,这就是为什么需要导出DISPLAY部分。我认为你仍然需要登录到实际的Ubuntu机器上的桌面以便在此之后与VNC连接。 dump命令只是用于确认所有设置保持不变,你真的不需要它。
如果您希望始终保持显示,可以选择执行此操作:
dconf write /org/gnome/desktop/screensaver/lock-enabled false
dconf write /org/gnome/desktop/screensaver/ubuntu-lock-on-suspend false
dconf write /org/gnome/desktop/session/idle-delay "uint32 0"