RDP over SSH. Как я писал клиент для удаленки под винду

Удаленные пользователи могут подключаться к своим компьютерам Windows 10 через службу удаленных рабочих столов (RDP) в редакциях Pro и Enterprise (но не в Home/Single Language). Но есть ограничение на количество одновременных RDP сессии – допускается одновременная работа только одного удаленного пользователя. Если вы попробуете открыть вторую RDP сессию, появится предупреждение с запросом отключить сеанс первого пользователя.

RDP Wrapper Library

Альтернативой модификации файла является использование проекта RDP Wrapper Library . Эта программа работает в качестве прослойки между менеджером управления службами (SCM- Service Control Manager) и службой терминалов (Terminal Services) и позволяет включить не только поддержку нескольких одновременных RDP сессии, но и активировать поддержку RDP Host на домашних редакциях Windows 10. RDP Wrapper не вносит никаких изменений в файл , просто подгружая termsrv с изменёнными параметрами.

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

Важно . Перед установкой RDP Wrapper: важно, чтобы у вас использовалась оригинальная (непропатченная) версия файл В противном случае RDP Wrapper может работать не стабильно, или вообще не запускаться.

Скачать RDP Wrapper можно с репозитория GitHub: (последняя доступная версия RDP Wrapper Library v1.6.2 вышла относительно недавно – 28 декабря 2017 года). Судя по информации на странице разработчика, поддерживаются все версии Windows. Windows 10 поддержиывается вплость до версии Insider Preview build от 13 декабря 2017 года.

Совет . Кстати говоря, доступны исходники RDP Wrapper Library, что позволяет при желании самому собрать исполняемые файлы.

Архив содержит несколько файлов:

  • -программа установки/удаления RDP Wrapper Library
  • — утилита настройки RDP Wrapper
  • — Local RDP Checker — утилита проверки RDP
  • , , — пакетные файлы для установки, удаления и обновления RDP Wrapper

Чтобы установить утилиту, запускам файл с правами администратора.

После окончания установки запускаем . И удостоверяемся, что в секции Diagnostics все элементы окрашены в зеленый цвет.

Примечание . В моем случае, т.к. на компьютере отсутствует доступ в интернет, программа не смогла получить с Github актуальную версию INI файла с настройками под мою версию Windows. Поэтому в статусе указано . Скачайте файл с ресурса разработки и поместите его в каталог установки. Перезапустите службу и убедитесь, что надпись сменилась на .

Из интересных особенностей новой версии RDP Wrapper:

  • опция Hide users on logon screen – позволяет .
  • При отключении опции Single session per user — будут разрешены несколько одновременных RDP сессий под одной учетной записью (устанавливается ключ реестра fSingleSessionPerUser = 0 в ветке HKLM\SYSTEM\ CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser).

В том случае, если после обновления версии Windows, RDP Wrapper не работает, проверьте, что в секции Diagnostics присутствует надпись .

Попробуйте обновить ini файл скриптом , либо вручную и переустановить службу

-i

Пытаемся открыть вторую RDP сессию. Все получилось! Теперь наша Windows 10 позволяет одновременно подключаться по RDP сразу двум удаленным пользователям.

Утилита должна работать на всех поддерживаемых на данный момент редакциях Windows: Windows Vista, Windows 7, Windows 8, Windows 8.1 и Windows 10. Таким образом из любой клиентской версии Windows можно сделать сервер терминалов.

Готовим серверную часть

Прос­тые вещи вро­де нас­трой­ки RDP или SSH-сер­вера мы рас­смат­ривать не будем. Инс­трук­ций в интерне­те име­ется тьма, а у нас объ­ем огра­ничен, да и перег­ружать статью не хочет­ся. Так­же я не ста­ну под­робно рас­ска­зывать, как реали­зовать получе­ние дан­ных с Kerio Control: на стра­нице про­екта мож­но най­ти го­товый код.

Пер­вым делом нам нуж­но раз­решить RDP-под­клю­чения на кли­ент­ских машинах в локаль­ной сети. Если там реали­зова­но цен­тра­лизо­ван­ное управле­ние типа Active Directory, тебе повез­ло. Раз­реша­ем под­клю­чение к RDP в груп­повых полити­ках. Если нет, обхо­дим рабочие мес­та ногами и раз­реша­ем на целевых локаль­ных машинах RDP. Не забыва­ем и о фай­рво­лах.

Вто­рым шагом нам понадо­бит­ся дос­тупный из интерне­та SSH-сер­вер. Тех­ничес­ки подой­дет любое решение. Я исполь­зовал VPS с Debian 10 (один мой зна­комый под­нимал такой сер­вак даже на роуте­ре, что небезо­пас­но). Даль­ше сто­ит раз­делить решения на нес­коль­ко вер­сий, кон­крет­ная реали­зация зависит от того, как орга­низо­вано получе­ние дан­ных для авто­риза­ции поль­зовате­лей.

Пер­воначаль­но у нас исполь­зовал­ся Kerio с авто­риза­цией поль­зовате­лей через AD.

Схе­ма под­клю­чения

Кли­ент под­клю­чал­ся по SSH, проб­расывал порт на API Kerio Control Server, затем под­клю­чал­ся к нему, выпол­нял поиск по задан­ным парамет­рам (логин или фамилия сот­рудни­ка), искал IP локаль­ного ПК. Далее раз­рывал SSH-соеди­нение и уста­нав­ливал новое уже с проб­росом пор­та на най­ден­ный IP, на порт RDP (3389), пос­ле чего штат­ными средс­тва­ми Windows под­нималась сес­сия RDP с переда­чей парамет­ров под­клю­чения.

Та­кое решение работа­ло доволь­но быс­тро, но нам это­го ста­ло мало, и мы раз­делили его на две час­ти. Сер­верный скрипт стал работать на SSH-сер­вере и сам вре­мя от вре­мени ходить в Kerio за информа­цией. Кли­ент­ская часть под­клю­чалась к сер­веру по SFTP, иска­ла нуж­ные дан­ные, офор­млен­ные в JSON, и выпол­няла под­клю­чение. В ито­ге ско­рость работы уве­личи­лась.

Ре­комен­дую сра­зу нас­тро­ить сер­вер OpenSSH с дос­тупом по клю­чам и под­готовить RSA-клю­чи для авто­риза­ции. Для это­го нуж­но соз­дать отдель­ного поль­зовате­ля и огра­ничить его в пра­вах, затем отдать ему пуб­личную часть клю­ча. Ниже при­веду часть /etc/ssh/sshd_config с нас­трой­ками этих двух поль­зовате­лей:

Match User sftp PubkeyAuthentication yes # PasswordAuthentication yes ChrootDirectory /srv/sftp ForceCommand internalsftp AllowTcpForwarding noMatch User user1 X11Forwarding no ForceCommand /usr/bin/cmatrix # Подойдет и любая другая заглушка (можно заморочиться и отправлять пользователя в песочный bash) PasswordAuthentication yes

Пер­вому поль­зовате­лю SFTP раз­решено под­клю­чать­ся толь­ко к это­му самому SFTP. Вто­рому — лишь для проб­роса пор­тов. Если у тебя исполь­зует­ся Kerio для получе­ния дан­ных о поль­зовате­лях, Active Directory или еще что‑то цен­тра­лизо­ван­ное, рекомен­дую завес­ти отдель­ную учет­ку и огра­ничить ее в пра­вах на вся­кий слу­чай.

Как зайти на сервер по RDP протоколу.

RDP (англ. Remote Desktop Protocol — протокол удалённого рабочего стола) позволяет получать доступ к удалённым компьютерам/серверам без непосредственного контакта с ними. Пользователь сможет видеть все файлы, запускать приложения и выполнять все остальные задачи, как будто находясь в непосредственной близости от своего компьютера. Скорость работы через этот протокол зависит только от скорости интернет-соединения.

Windows

Как зайти на сервер по RDP протоколу.

Linux

Android

Windows

В ОС Windows для подключения можно воспользоваться стандартной утилитой mstsc. Запустить её можно по пути:

Как зайти на сервер по RDP протоколу.

«Пуск -> Программы -> Стандартные -> Подключение к удалённому рабочему столу»

Или просто нажмите комбинацию клавиш Win+R и в открывшемся окне наберите mstsc и нажмите ОК. Сам файл программы расположен в директории C:\Windows\System32.

В открывшемся окне необходимо указать IP-адрес или доменное имя компьютера/сервера, к которому вы хотите подключиться.

При подключении вам будет предложено ввести свои учетные данные. Логин по умолчанию — Administrator В процессе у вас может возникнуть дополнительное окно “Не получается проверить подлинность сертификата”. Отмечаете галочку и нажать “ОК”. За этим окном может появиться еще одно, там аналогично отмечаете галочку и нажать “ОК”. Причина этого заключается в том, что сервер шифрует передаваемые данные SSL-сертификатом, который он сгенерировал сам в автоматическом режиме. Данное уведомление не является свидетельством о проблеме с безопасностью, а только предупреждает вас о том, что соединение зашифровано с использованием сертификата, который не был выдан авторизованным центром. После вы попадете на рабочий стол вашего сервера.

Как зайти на сервер по RDP протоколу.

Linux

RDP – это закрытый протокол компании Microsoft, она же в свою очередь не выпускает RDP-клиентов для операционных систем семейства Linux.

Для подключения можно использовать ПО сторонних разработчиков, например — Remmina.

Для её установки Вам нужно выполнить следующие команды в консоли: sudo apt-add-repository ppa:remmina-ppa-team/remmina-next sudo apt-get update sudo apt-get install remmina remmina-plugin-rdp libfreerdp-plugins-standard

Как зайти на сервер по RDP протоколу.

Не забудьте выйти/убить все ваши запущенные экземпляры remmina. Сделать это можно перезагрузкой компьютера, либо выполнением следующей команды в том же терминале: sudo killall remmina

Запускаем программу, нажимаем на добавление нового подключения и заполняем поля данными для подключения и авторизации к вашему серверу.

После сохранения ваш сервер будет всегда доступен в списке подключений для быстрого доступа. Для подключения к нему дважды кликните мышкой по строчке вашего сервера.

При первом подключении к серверу вы можете увидеть информацию о недоверенном сертификате безопасности. Причина этого описана выше. Просто нажмите «ОК» и вы увидите рабочий стол вашего сервера.

Как зайти на сервер по RDP протоколу.

Android

Прежде всего вам необходимо скачать с Google Play и установить программу Microsoft Remote Desktop (это официальный RDP-клиент от Microsoft).

Запустите приложение после установки и нажмите на +, после чего на кнопку Desktop.

Как зайти на сервер по RDP протоколу.

Нажимаем ADD MANUALLY.

Вводим IP-адрес или доменное имя компьютера/сервера, к которому вы хотите подключиться. В поле User name выбираем Add user account.

Как зайти на сервер по RDP протоколу.

Вводим данные для доступа, и нажимаем Save.

При подключении к серверу вы можете увидеть информацию о недоверенном сертификате безопасности. Причина этого описана выше. Выберите галочкой «Don’t ask me again for connections to this computer» и нажмите «Connect».

Если авторизационные данные и IP-адрес сервера были введены без ошибок, вы успешно подключитесь к вашему серверу.

Как зайти на сервер по RDP протоколу.

Настройки на стороне клиента

Если у вас наблюдается плавающая проблема с RDP (то нормально работает, то нет), то попробуйте изменить данный параметр.

Данная настройка вносит изменения в TCP Receive Window Auto-Tuning.

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

netsh int tcp set global autotuninglevel=disabled

Если все было сделано верно, то появится надмись «OK».

Читайте также:  Как самостоятельно установить Windows 10?