Як налаштувати обмін віддаленим робочим столом через SSH?


Відповіді:


51

Спосіб 1:

Цього можна досягти за допомогою сервера vino vnc & remmina (обидва приходять за замовчуванням з ubuntu; якщо не встановити його запустивши sudo apt-get install remmina). Потім запустіть наступні команди з локального комп'ютера у термінальному рядку:

  1. ssh -Y gman@remote. Використовуйте надійне перенаправлення X11, інакше воно не буде працювати

  2. vino-preferences. Це відкриє вино-преференції.

    вино-уподобання

  3. Також натисніть configure network automatically to accept connection. Але не вводьте жодного пароля, його базовий64 закодований . Потім натисніть кнопку «Закрити». Потім запустіть:

    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, це може бути 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


Якщо ви використовуєте vncviewer з повільним ssh-з'єднанням, ваша команда повинна мати вигляд 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, але потребує швидкого з'єднання.
erik

@erik Дякую за пояснення, як це використовувати vncviewerдля повільного з'єднання. Я особисто, напевно, встановлю, QualityLevel=4 or 5тому що 0 qualitylevel(що 256 colors, на мою думку) занадто тьмяне для мене.
Хуршид Алам

1
Ваш "Спосіб 2" ідеально підходить для швидкого доступу до фізичного дисплея віддалено без будь-яких спеціальних постійних налаштувань. Мені потрібно було додати параметр -auth, як пояснено у повідомленні про помилку, коли я виконував команду, але в іншому випадку працює ідеально. Дякую!
П’єр

@gerky метод 3 буде NoMachine, на даний момент найшвидший і безкоштовний (незважаючи на не відкритий ресурс), і робота над android теж
Водолій Power

1
Для методу 2 мені довелося використовувати -auth guessі запустити його як root. Дуже корисно, дякую!
Боб Карлсон

9

Огляд рішення

Якщо припустити, що ви вже налаштували OpenSSH Serverна своєму хост-машині, спочатку потрібно включити управління робочим столом на своєму хост-машині. Якщо ви можете спочатку ввімкнути керування робочим столом на своєму хост-сервері локально, перейдіть до пункту 1a. Якщо спочатку потрібно дистанційно ввімкнути управління робочим столом на своєму хост-машині, перейдіть до пункту 1b.

Далі створіть профіль клієнта віддаленого робочого столу на вашій клієнтській машині, щоб підключитися до хост-машини через тунель SSH і в кінцевому підсумку переглянути та контролювати робочий стіл хост-машини через тунель SSH.

1а. Місцеве ввімкнення дистанційного керування хост-машиною

Виконайте наступне на хост-машині:

vino-preferences
  • vino-preferences також у тирі під 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. Закрити

1б. Віддалене ввімкнення дистанційного керування хост-машиною

Виконайте наступне на клієнтській машині, замінивши 123.123.12.3IP-адресу вашого хост-машини:

ssh -Y 123.123.12.3
  • -Y, увімкнює довірену переадресацію X11. Довірені переадресації X11 не підлягають контролю розширення X11 SECURITY.

vino-preferences
  • vino-preferences також у тирі під 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 також у тирі під 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?
Джон Т

Я здогадуюсь, що вам потрібна команда ssh, запущена десь із клієнта, щось на зразок: ssh -L 12345: localhost: 5900 user @ server_ip, перш ніж використовувати віддалений клієнт, як описано.
Джон Т

3

Мені вдалося встановити нову установку 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"

2
  1. Ви можете використовувати ssh для початку сеансу vnc
  2. Використовуйте XnestX11 forwording для віддаленого запуску сеансу та пересилання його на поточний комп'ютер. (Я роблю це час від часу зі своєї пі) man сторінки

Я використовую Xnestтак:

  • Xnest :1 -ac &
  • тоді DISPLAY=:1 . /etc/X11/Xsession

0

Як запустити сервер 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.


Зробив наступне. Схоже, це все передбачає, що ви вже увійшли до консолі 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 на цільовому хості, але без подальшої конфігурації

  • Він вимагає винагре на вашому ПК, але ви можете банально змінити його на інший переглядач VNC

0

У серверному ПК.

  • Відкрийте "vino-preferences" з терміналу або "Sharing Desktop" за допомогою тире.

вино-преференції

У клієнтському ПК (звідки ви хочете керувати інтерфейсом сервера).

  • Зберігайте налаштування, як показано на малюнках нижче (із змінами в місці імені користувача та IP-адреси).

* Основна * вкладка * Розширений * вкладка * SSH * вкладка

Підводні камені.

  • Коли я намагався встановити налаштування вина на сервер із віддаленого ПК за допомогою SSH, це змінилося, але з'єднання не відбулося. Мені довелося це робити безпосередньо на серверній машині (не віддалено). Я не знаю причини такої поведінки.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.