Pull to refresh
83.86
Cloud4Y
#1 Корпоративный облачный провайдер

Подключаем RDP-клиента Windows к MacOS

Reading time4 min
Views16K

Привет, Хабр! Меня зовут Холодаев Алексей, я младший системный администратор в Cloud4Y. Сегодня хочу поделиться способом подключения стандартного RDP-клиента Windows к MacOS. Если интересно, ныряйте под кат.

Вы наверняка знаете, что в MacOS есть встроенный VNC сервер, к которому можно подключаться через VNC клиента. Однажды я задумался: а почему бы не использовать стандартный RDP client Windows для подключения к яблочной операционной системе? Немного погуглив, я обнаружил, что существует бесплатный RDP сервер на MacOS — xRDP. Данный сервер легко устанавливается на ОС Linux/Unix. Об установке и настройке этого сервера расскажу далее.

Установку я производил на свой макбук с MacOS Big Sur.

Для начала необходимо установить инструменты командной строки Xcode. Для этого выполняем команду в ПО терминала.

xcode-select --install

Далее установим менеджер сторонних пакетов Homebrew командой

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Установим библиотеку OpenSSL командой

brew install openssl

После установки OpenSSL присвоим переменной CPPFLAGS путь к библиотеке, чтобы компилятор смог данную библиотеку найти. Выполним команду

export CPPFLAGS="-I/usr/local/opt/openssl/include"
Установим необходимые пакеты командами
brew install automake
brew install libtool
brew install pkgconfig
brew install nasm

Установим XQuartz – программное средство системы X Window System. Скачать программу можно с официального сайта. После установки необходимо перезайти в систему.

Для удобства работы создадим отдельную папку: mkdir /Users/admin/Documents/xrdp/

Теперь включим встроенный VNC сервер. Для этого перейдём в «Системные настройки»

Далее выбираем общий доступ:

Включаем функцию «Общий экран» и переходим в настройки компьютера

Включаем опцию “любой пользователь может запросить разрешение управлять экраном” и задаём пароль в пункте “Пользователи VNC могут получить управление экраном по паролю

Теперь загрузим необходимые пакеты.

Нам требуются xRDP и xOrgRDP в формате исходного кода.

Загрузить их можно отсюда  (tar.gz архивы). После загрузки переместим данные архивы в папку, которую мы ранее создали, и извлечём их.

cp /Users/admin/Downloads/xrdp-0.9.11.tar /Users/admin/Documents/xrdp/
tar -xvf xrdp-0.9.11.tar
rm xrdp-0.9.11.tar

cp /Users/admin/Downloads/xorgxrdp-0.2.11.tar /Users/admin/Documents/xrdp/
tar -xvf xorgxrdp-0.2.11.tar
rm xorgxrdp-0.2.11.tar

Сборка xRDP

Запустим Bootstrapper и сконфигурируем сборку с помощью OpenSSL. Затем запустим make установщик.

Если вы получаете ошибку на этом шаге, то скорей всего это связано с неправильным экспортом OpenSSL CPPFLAGS.

Сборка xOrgRDP

Запустим Bootstrapper и сконфигурируем сборку так, чтоб она происходила при помощи OpenSSL. Затем запустим make установщик.

cd ../xorgxrdp-0.2.11/
./bootstrap
./configure PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig
make
sudo make install

Если вы столкнулись с ошибкой, убедитесь, что вы перезапустили сессию после установки сервера xQuartz X11. Если вы получаете ошибку /opt/X11/include/xorg/dixfontstr.h:30:10:fatal error ‘X11/fonts/libxfont2.h’ file not found, необходимо поправить файл dixfontstr.h, прописав #include “/opt/X11/fonts/libxfont2.h” вместо #include “/X11/fonts/libxfont2.h”.

xRDP сервер почти готов. Теперь необходимо настроить его. Давайте откроем файл xrdp.ini.

sudo vi /etc/xrdp/xrdp.ini

Найдём секцию в файле со всеми типами сессий.

[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
#xserverbpp=24
#delay_ms=2000

[vnc-any]
name=vnc-any
lib=libvnc.so
ip=ask
port=ask5900
username=na
password=ask
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000

[neutrinordp-any]
name=neutrinordp-any
lib=libxrdpneutrinordp.so
ip=ask
port=ask3389
username=ask
password=ask

Я буду подключаться через модуль Xvnc. Используем библиотеку libvnc.dylib вместо libvnc.so. Я закомментирую все модули, которые не буду использовать. Вот так будет выглядеть изменённая секция с типами сессий в файле xrdp.ini.

#[Xorg]
#name=Xorg
#lib=libxup.so
#username=ask
#password=ask
#ip=127.0.0.1
#port=-1
#code=20

[Xvnc]
name=Xvnc
lib=libvnc.dylib
username=ask
password=ask
ip=127.0.0.1
port=5900
xserverbpp=24
#delay_ms=2000

#[vnc-any]
#name=RDP to VNC Connector
#lib=libvnc.so
#ip=127.0.0.1
#port=5900
#username=ask
#password=ask
#xserverbpp=24
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000

#[neutrinordp-any]
#name=neutrinordp-any
#lib=libxrdpneutrinordp.so
#ip=ask
#port=ask3389
#username=ask
#password=ask

Примечание: В редакторе vi нажмите клавишу «i», чтобы войти в режим редактирования. Чтобы сохранить и выйти, нажмите «ESC» и введите :wq!

Теперь запустим демоны xRDP и xRDP-sesman. Они находятся по пути /usr/local/sbin/.

Выполним следующие команды:

sudo /usr/local/sbin/xrdp
sudo /usr/local/sbin/xrdp-sesman

Пробуем подключиться по RDP. Вводим логин и пароль, нажимаем ENTER.

Если у вас появилось окно авторизации MacOS, значит, всё работает правильно.

Если у вас возникают какие-либо ошибки, смотрите логи. Они находятся по пути:

/var/logs/xrdp.log

/var/logs/xrdp-sesman.log

Вот таким способом можно предоставить доступ на MAC OS по протоколу RDP. Спасибо за внимание!


Что ещё интересного есть в блоге Cloud4Y

→ История Game Genie — чит-устройства, которое всколыхнуло мир

→ Как я случайно заблокировал 10 000 телефонов в Южной Америке

→ Странные продукты Apple

→ WD-40: средство, которое может почти всё

→ Как ИИ учится рисовать аниме

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

Tags:
Hubs:
Total votes 26: ↑25 and ↓1+24
Comments8

Articles

Information

Website
www.cloud4y.ru
Registered
Founded
2009
Employees
51–100 employees
Location
Россия