Как настроить NoMachine в Ubuntu с аутентификацией на основе ключа?
Как настроить NoMachine на Ubuntu?
Почему Номашина?
В Windows мне нравится использовать Chrome Remote Desktop для удаленного входа в систему, и он отлично работает. Но в Linux у меня просто проблема за проблемой с удаленным рабочим столом Chrome, и это очень глючит:
- Это мешает мне монтировать и использовать подключенные USB-диски или накопители: автоматическое монтирование при нажатии на диски в файловом менеджере с графическим интерфейсом внезапно перестало работать в Ubuntu. («Невозможно смонтировать... Нет прав на выполнение операции».)
- Это мешает мне изменить настройки моего принтера: настройки gnome Ubuntu 18.04: как исправить «Системная политика запрещает изменения. Обратитесь к системному администратору» для второго пользователя, который уже является администратором
- Я получаю примерно одно использование за переустановку удаленного рабочего стола Chrome: не удается подключиться к удаленному рабочему столу Chrome в Ubuntu 18 .
- и т.п.
Итак, я слышал хорошие отзывы о NoMachine и хочу попробовать. Но я хочу использовать аутентификацию на основе ключей и отключить аутентификацию на основе пароля для повышения безопасности. Итак, как мне настроить NoMachine для этого?
2 ответа
Первоначально я разместил эти инструкции в своем репозитории eRCaGuy_dotfiles здесь: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/tree/master/NoMachine .
Если вам когда-нибудь понадобится подключиться по ssh, я задокументировал свои различные заметки по ssh здесь .
Информация о NoMachine
NoMachine — отличная программа удаленного входа в систему с отличными возможностями обмена файлами/монтирования и отличной кросс-платформенной поддержкой для Windows, Mac, Linux, iOS, Android, Raspberry Pi и ARM. Это не открытый исходный код, но его использование бесплатно (только для личного использования - предприятия должны платить).
Настраивать
Скачать:
https://www.nomachine.com/download
Чтобы включить аутентификацию на основе ключей на сервере:
Ссылки:
ПРОЧИТАЙТЕ ЭТО!
По сути, просто добавьте свой открытый ключ в
1) Запустить с клиента :
Сгенерировать новую пару закрытый/открытый ключ от клиента ; запустите это с клиента:
ssh-keygen -t rsa -b 4096 -C "your personal comment or email"
Скопируйте открытый (.pub) ключ только с клиента на сервер; запустите это с клиента; обратите внимание на переименование файла в месте назначения, чтобы избежать конфликта с ключами, уже сгенерированными на сервере:
scp ~/.ssh/id_rsa.pub username@server_hostname_or_ip:~/.ssh/id_rsa_nxclient.pub
2) Запустить с сервера :
Теперь добавьте открытый ключ на сервер в соответствующий файл NoMachine; запустите это с сервера:
cat ~/.ssh/id_rsa_nxclient.pub >> ~/.nx/config/authorized.crt
И, наконец, установите разрешения для этого файла на 0600, чтобы разрешить чтение/запись этого файла ТОЛЬКО для пользователя (владельца) этого файла в целях безопасности:
chmod 0600 ~/.nx/config/authorized.crt
Чтобы отключить вход на сервер по паролю:
NB: НЕ делайте этого до тех пор, пока аутентификация на основе ключей не будет настроена и проверена на работоспособность, иначе вы потеряете возможность удаленного подключения через NoMachine и вам придется вручную исправлять это удаленно через ssh или локально!
Ссылки:
(не совсем отвечая на этот вопрос, но косвенно помогая в его выяснении)
- Предотвращение аутентификации по паролю с помощью протокола NX и аутентификации на основе ключа
- Объяснение файлов server.cfg и node.cfg (для сервера версии 4 и выше)
Примечание. В Linux server.cfg находится здесь: «/usr/NX/etc/server.cfg».
На сервере редактируем server.cfg(
#
# Specify how clients will have to authenticate to the server, by
# default all the available methods are supported. This corresponds
# to value all. To specify a subset of methods use a comma-separated
# list.
#
# Supported methods for connections by NX protocol are:
# NX-password : Password authentication.
# NX-private-key: Key-based authentication.
# NX-kerberos : Kerberos ticket-based authentication.
#
# Supported method for connections by SSH protocol is:
# SSH-system : All methods supported for the system login.
# SSH authentication methods for the system login
# have to be set on the system for example in the
# PAM configuration.
#
# For example:
# AcceptedAuthenticationMethods NX-private-key,SSH-system
#
# This key has to be used in conjunction with ClientConnectionMethod.
# See also the EnableNXClientAuthentication key for enabling SSL
# client authentication for connections by NX protocol.
#
#AcceptedAuthenticationMethods all
Теперь чуть ниже этой закомментированной строки, указывающей настройку по умолчанию:
#AcceptedAuthenticationMethods all
Добавьте эту строку, чтобы изменить настройку, чтобы разрешить ТОЛЬКО аутентификацию на основе ключа:
AcceptedAuthenticationMethods NX-private-key
Затем перезапустите сервер NoMachine (https://www.nomachine.com/TR11N07362):
sudo /usr/NX/bin/nxserver --restart
Теперь попробуйте подключиться удаленно с помощью NoMachine с аутентификацией на основе пароля, и вы должны увидеть следующую ошибку в программе с графическим интерфейсом:
Ooops! The session negotation failed. Error: Authentication method NX-password is not allowed on this server
Если вы увидели указанную выше ошибку, вы успешно отключили вход в систему с аутентификацией по паролю! Теперь проверьте свою аутентификацию на основе ключа, чтобы убедиться, что она все еще работает.
Для подключения из-за пределов вашей сети
Чтобы подключиться к NoMachine из-за пределов вашего дома, вы должны либо использовать VPN в своей локальной сети, либо открыть переадресацию портов через брандмауэр в своем модеме.
Чтобы выполнить переадресацию портов, подключитесь к модему через его IP-адрес в браузере и через настройки сопоставьте какой-нибудь внешний порт, например
Порт по умолчанию для вашего сервера NoMachine:
Сделанный.
В базе знаний NoMachine это описано в разделе « Как настроить аутентификацию на основе ключей с помощью протокола NX», о котором Габриэль Стейплс упоминает в своем ответе:
Но есть ОШИБКА, которая требует дополнительного шага для снятия флажка «Импортировать закрытый ключ в файл подключения» на клиенте, чтобы он работал: