Відповіді:
Цього можна досягти за допомогою сервера vino vnc & remmina (обидва приходять за замовчуванням з ubuntu; якщо не встановити його запустивши sudo apt-get install remmina). Потім запустіть наступні команди з локального комп'ютера у термінальному рядку:
ssh -Y gman@remote. Використовуйте надійне перенаправлення X11, інакше воно не буде працювати
vino-preferences. Це відкриє вино-преференції.

Також натисніть configure network automatically to accept connection. Але не вводьте жодного пароля, його базовий64 закодований . Потім натисніть кнопку «Закрити». Потім запустіть:
sudo -s
export DISPLAY=:0.0
xhost +
/usr/lib/vino/vino-server &
Він запустить сервер vino.
Вихід із сервера:
xhost -
Press CTRL+C twice
exit
exit
Тоді відкрийте ремінь . Виберіть vncза протоколом.
Під basicвкладкою в serverполе введіть адресу сервера .
На вкладці ssh натисніть enable ssh tunnel. Під ssh authentication, це може бути passwordабо public key:

Клацніть Зберегти. Потім двічі клацніть ім'я з'єднання (домашній робочий стіл, як показано на малюнку), щоб почати перегляд віддаленого робочого столу.
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
vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(на Debian / Ubuntu переглядач перебуває з жорсткості) або vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(на Red Hat / Fedora переглядач від tigervnc), де рівень якості і для Debian і Redhat є між 0 і 9, де найкраще 9, але потребує швидкого з'єднання.
vncviewerдля повільного з'єднання. Я особисто, напевно, встановлю, QualityLevel=4 or 5тому що 0 qualitylevel(що 256 colors, на мою думку) занадто тьмяне для мене.
-auth guessі запустити його як root. Дуже корисно, дякую!
Якщо припустити, що ви вже налаштували OpenSSH Serverна своєму хост-машині, спочатку потрібно включити управління робочим столом на своєму хост-машині. Якщо ви можете спочатку ввімкнути керування робочим столом на своєму хост-сервері локально, перейдіть до пункту 1a. Якщо спочатку потрібно дистанційно ввімкнути управління робочим столом на своєму хост-машині, перейдіть до пункту 1b.
Далі створіть профіль клієнта віддаленого робочого столу на вашій клієнтській машині, щоб підключитися до хост-машини через тунель SSH і в кінцевому підсумку переглянути та контролювати робочий стіл хост-машини через тунель SSH.
Виконайте наступне на хост-машині:
vino-preferences
vino-preferences також у тирі під Desktop Sharing
Allow other users to view your desktopAllow other users to control your desktopRequire the user to enter this passwordВиконайте наступне на клієнтській машині, замінивши 123.123.12.3IP-адресу вашого хост-машини:
ssh -Y 123.123.12.3
vino-preferences
vino-preferences також у тирі під Desktop Sharing
Allow other users to view your desktopAllow other users to control your desktopRequire the user to enter this passwordВиконайте наступне на клієнтській машині:
remmina
Remmina Remote Desktop ClientCtrl+ Nабо З'єднання> Нове

ServerSSHвкладку
Enable SSH TunnelSSH Authentication <username>і режимНа клієнтській машині, коли його запитують <username>пароль, введіть його для створення тунелю SSH. Коли вас запитають пароль VNC, введіть парольну фразу, яку ви раніше ввели у хост-апарат.
Якщо ви успішно виконали цей крок, вам слід переглядати та контролювати робочий стіл хост-машини з вашого клієнтського апарату через тунель SSH.
Мені вдалося встановити нову установку Ubuntu 16.04 з віддаленого з'єднання ssh за допомогою наступного сценарію:
#! / бін / баш експортувати DISPLAY =: 0 read -e -p "Пароль VNC:" -i "ubuntu" пароль dconf write / org / gnome / desktop / віддалений доступ / включений true dconf write / org / gnome / desktop / remote-access / prompt-enable false dconf write / org / gnome / desktop / віддалений доступ / методи аутентифікації "['vnc']" dconf write / org / gnome / desktop / віддалений доступ / вимагає шифрування false dconf write / org / gnome / desktop / віддалений доступ / vnc-пароль \ "\ '$ (відлуння -n $ пароль | base64) \' \" dumpf dump / org / gnome / настільний / віддалений доступ / перезапуск служби sudo служби lightdm
Цитування важливе для будь-якого з рядкових налаштувань (поодинокі галочки всередині лапок). Для того, щоб dconf міг писати, йому потрібен доступ до XWindows, тому для експорту потрібна частина експорту DISPLAY. Я думаю, що вам потрібно все-таки увійти на робочий стіл на фактичній машині Ubuntu, щоб після цього підключитися до VNC. Команда dump якраз існує, щоб підтвердити всі налаштування, які вам потрібні.
За бажанням ви можете це зробити, якщо ви хочете постійно тримати дисплей:
dconf write / org / gnome / desktop / screensaver / enable lock with false dconf write / org / gnome / desktop / screensaver / ubuntu-lock-on-suspend false dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
XnestX11 forwording для віддаленого запуску сеансу та пересилання його на поточний комп'ютер. (Я роблю це час від часу зі своєї пі) man сторінкиЯ використовую Xnestтак:
Xnest :1 -ac &DISPLAY=:1 . /etc/X11/XsessionЯк запустити сервер Vino віддалено без переадресації X (лише для командного рядка)
Увійдіть на віддалений комп'ютер як той користувач, який поділиться своїм робочим столом та перенаправить порт 5900 до того ж порту на localhost. За допомогою PuTTY перенаправлення встановлюється у З'єднання / SSH / Тунелі. За допомогою командного рядка використовуйте:
ssh -L 5900:localhost:5900 user@remote-computer
Встановити, vino-serverякщо вона ще не встановлена. Наприклад:
sudo apt install vino
Увімкнути спільний доступ до робочого столу (відповідність номера дисплея в 1-й та 2-й рядках):
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 та підключіться до localhostадреси сервера VNC.
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
На основі відповіді @Khurshid Alam я представляю такий фрагмент:
ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost
Це одна команда, яка не потребує взаємодії
Він створює тунель SSH з переадресацією портів, запускається x11vncдосить безпечним способом, запускає та підключає глядач VNC
Він вимагає x11vnc на цільовому хості, але без подальшої конфігурації
У серверному ПК.
У клієнтському ПК (звідки ви хочете керувати інтерфейсом сервера).
Підводні камені.