NoMachine — бесплатная программа для удаленного доступа к рабочему столу. Работает под Windows, Linux, macOS, Raspberry Pi, Android, iOS. Поддерживает: звук с сервера на клиента, микрофон с клиента на сервер, передачу файлов, USB устройства и даже принтеры. Давайте настраивать!

Программа NoMachine

Программа NoMachine состоит из двух компонентов: клиента и сервера. На удаленной машине (т.е. на компьютере, рабочий стол которого мы хотим получить на локальной машине) мы будем использовать сервер NoMachine. На локальной машине (т.е. на компьютере, на котором мы хотим получить рабочий стол удаленной машины), мы будем использовать клиент NoMachine.

Сервер NoMachine на удаленной машине (Debian)

Чтобы скачать NoMachine, переходим по ссылке: https://downloads.nomachine.com.

У меня удаленная машина под Debian — выбираю тип диструбутива DEB и скачиваю.

NoMachine для Debian

Устанавливаем:

dpkg -i nomachine_*.deb
Установка NoMachine в Debian

После установки NoMachine начинает работать как сервер nxserver и слушать порт 4000.

Проверяем статус сервера nxserver:

systemctl status nxserver

Проверяем прослушиваемые порты:

netstat -nltp

Чтобы проверить статус сервера в GUI, кликаем мышью по иконке NoMachine (!M) в системном трее и выбираем Show server status.

NoMachine. Show server status
NoMachine. Статус сервера в GUI

Сервер установили, сервер работает.

Настройка сервера

Отключим гостевой доступ, включенный по умолчанию. Для этого переходим на вкладку Security. Снимаем «галочку» с пункта «Allow guest desktop sharing access on this server«. Возвращаемся на вкладку Status и перезагружаем сервер с помощью кнопки Restart the server.

Аутентификация пользователя по ключу

Аутентификация пользователя по логину/паролю не является безопасной. Безопасной альтернативой является аутентификация пользователя по ключу. Вместо запроса пароля пользователя, аутентификация основывается на паре ключей, созданной в формате OpenSSH и состоящей из публичного ключа, установленного на сервере, и приватного ключа, находящегося у пользователя.

Генерация пары ключей

Генерируем пару ключей:

ssh-keygen -t rsa -b 4096

Придумываем имя для ключей. Я придумала имя user-openssh. И у меня в текущей директории сгенерировался приватный ключ user-openssh и публичный ключ user-openssh.pub.

Герерация пары ключей в формате Openssh

Приватный ключ передаем пользователю, а публичный ключ разместим в нужном месте на сервере.

Размещение публичного ключа на сервере

Создаем директорию $HOME/.nx/config, если она не существует:

mkdir $HOME/.nx/config

Создаем файл $HOME/.nx/config/authorized.crt и устанавливаем необходимые разрешения на доступ к нему:

touch $HOME/.nx/config/authorized.crt
chmod 0600 $HOME/.nx/config/authorized.crt

Добавляем публичный ключ user-openssh.pub в файл $HOME/.nx/config/authorized.crt:

cat user-openssh.pub >> ~/.nx/config/authorized.crt

Включение аутентификации по ключу на сервере

Добавляем в конфигурационный файл /usr/NX/etc/server.cfg строку:

AcceptedAuthenticationMethods NX-private-key

Перезагружаем сервер NoMachine:

/etc/NX/nxserver --restart

Проброс портов

Поскольку моя удаленная машина стоит за роутером, то я пробрасываю порт 4000 (TCP и UDP) наружу:

Проброс портов на роутере

Клиент NoMachine на локальной машине (Windows)

У меня локальная машина под Windows. На том же сайте NoMachine https://downloads.nomachine.com выбираю дистрибутив для Windows, скачиваю и устанавливаю:

Установка NoMachine в Windows

Запускаем программу NoMachine — это клиент. А программа NoMachine Service — это сервер, он нам не нужен.

Нажимаем кнопку Добивить, чтобы создать подключение к удаленной машине. В поле Хост вводим IP адрес удаленной машины. Порт4000, ПротоколNX.

У меня удаленная машина за роутером, поэтому в поле Хост я указываю IP адрес роутера.

Настройка подключения в NoMachine

Переходим на вкладку Настройка, выбираем «Используйте аутентификацию на основе ключей по ключу, который вы предоставляете» и нажимаем кнопку Изменить.

Настройка аутентификации по ключу в NoMachine

Выбираем приватный ключ. У меня это user-openssh. Нажимаем стрелку <, чтобы вернуться на вкладку Настройка, и нажимаем кнопку Добавить.

Подключение к удаленной машине создано, нажимаем кнопку Подключить.

Вводим имя пользователя и вводим парольную фразу (passphrase) в поле Индификационная фраза. Если парольная фраза при создании пары ключей не была задана, то поле Индификационная фраза не будет отображено. И нажимаем кнопку OK.

Подключение к удаленному рабочему столу в NoMachine

Все! Должен отобразиться удаленный рабочий стол.

Проверка звука

На удаленной машине открываем конфигурационный файл /usr/NX/etc/node.cfg и проверяем, что следующие параметры не закомментированы (т.е. нет символа # перед параметром) и выставлены в нужные значения:

AudioInterface pulseaudio
EnableAudio 1

Если вносите правки в конфигурационный файл /usr/NX/etc/node.cfg, то необходимо перезагрузить nxserver:

/etc/NX/nxserver --restart

На локальной машине запускаем клиент NoMachine, устанавливаем соединение с удаленной машиной, нажимаем комбинацию клавиш Ctrl+Alt+0 и проверем, что передача звука с сервера на клиент включена (нет «красного крестика»):

Передача звука с сервера на клиент включена

На удаленной машине запускаем команду на проигрывание звукового файла:

paplay /usr/share/sounds/alsa/Side_Left.wav

Звук должен быть слышен в динамиках локальной машины.

Проверка микрофона

Чтобы включить передачу микрофона с клиента на сервер, нажимаем комбинацию клавиш Ctrl+Alt+0, кликаем по Вход микрофона и нажимаем Включить микрофон.

Передача микрофона с клиента на сервер включена

Возвращаемся на рабочий стол удаленной машины, нажимая на стрелку <.

Кликнув в системном трее на микрофон, выбираем микрофон Remapped nx_voice_out.

Микрофон Remapped nx_voice_out

Кликнув на Audio mixer, в открывшемся окне, в разделе Recording выбираем Monitor of NoMachine Output.

Monitor of NoMachine Output

Запускаем запись 5-ти секунд звука на удаленной машине:

arecord -f cd -d 5 test.wav

В эти 5 секунд говорим что-нибудь в микрофон локальной машины.

Прослушаем получившуюся запись:

paplay test.wav

Должны услышать, что сказали в микрофон.

Вывод

Мне для работы был нужен не просто удаленный рабочий стол, а со звуком. Т.е. локальные динамики должны проигрывать звуки удаленной машины, а звук с локального микрофона должен передаваться на удаленную машину. Удаленный рабочий стол по протоколу VNC не подошел, пришлось бы отдельно прикручивать звук. А в NoMachine звук работает «из коробки».

Все вопросы, пожалуйста, пишите в комментариях под статьей.

Комментарии

Добавить комментарий

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.