Как включить OpenSSH Server в Windows 10.

Продолжая тему интеграции систем на базе Linux в доменную инфраструктуру Active Directory (AD), в этой заметке мы рассмотрим вопрос настройки Single sign-on (SSO) при подключении к Linux-серверу на базе Ubuntu Server 14.04 LTS по протоколу SSH с клиентских компьютеров под управлением Windows. Начнём с настроек на стороне Linux-сервера, который будет выступать в качестве сервера SSH на базе пакета OpenSSH (описание установки и базовой настройки рассмотрено ранее).

Как включить сервер OpenSSH в Windows

  1. Откройте приложение «Параметры» и перейдите в «Приложения» → «Приложения и возможности».
  1. Справа нажмите «Управление дополнительными компонентами».
  1. На следующей странице нажмите кнопку «Добавить компонент».
  1. В списке компонентов выберите OpenSSH Server и нажмите кнопку «Установить», это установит программное обеспечение OpenSSH Server в Windows 10
  1. Перезагрузите Windows 10.

Также вы можете установить клиент SSH с помощью PowerShell.

Откройте PowerShell от имени Администратора и выполните следующую команду и перезагрузите систему:

Get-WindowsCapability -Online | Where-Object{$_.Name -like “*”}

Файлы OpenSSH Server находятся в папке c:\windows\system32\Openssh. Помимо клиентских приложений SSH, папка содержит следующие серверные инструменты:

  • конфигурационный файл «sshd_config».

Сервер SSH настроен для работы в качестве службы.

На момент написания этой статьи он не запускается автоматически. Вам нужно включить его вручную.

Как запустить сервер OpenSSH в Windows 10.

  1. Откройте Службы, (нажмите клавиши Win + R и введите в поле «Выполнить») и запустите службу sshd. дважды кликните на запись sshd, чтобы открыть ее свойства.
  1. На вкладке «Вход в систему» см. Учетную запись пользователя, которая используется сервером sshd. В моем случае это NT Service \ sshd
  1. Теперь откройте командную строку или PowerShell от имени администратора .

С помощью этой команды перейдите в каталог \ Openssh

cd c:\windows\system32\Openssh

  1. Здесь запустите команду для создания ключей безопасности для сервера sshd:

ssh-keygen -A

Сервер Sshd сгенерирует ключи

  1. Теперь в командной строке введите: , чтобы запустить Проводник в папке OpenSSH.
  1. Кликните правой кнопкой мыши файл ssh_host_ed25519_key и измените владельца файла на пользователя службы sshd, например NT Service\sshd.
  1. Нажмите кнопку «Добавить» и добавьте разрешение «Чтение» для пользователя «NT Service\sshd».
  2. Теперь удалите все другие разрешения, чтобы получить что-то вроде этого:
  1. Нажмите «Применить» и подтвердите операцию.
  1. Наконец, откройте службы (нажмите клавиши Win + R и введите в поле «Выполнить») и запустите службу sshd. Она должна запустится:

Служба Sshd работает.

  1. Теперь необходимо разрешить использование SSH-порта в брандмауэре Windows. По умолчанию сервер использует порт 22. Запустите эту команду в командной строке или PowerShell от имени администратора:
Читайте также:  Как создать свою сборку Windows с помощью программы NTLite

netsh advfirewall firewall add rule name=»SSHD Port» dir=in action=allow protocol=TCP localport=22

  1. Наконец, установите пароль для своей учетной записи пользователя, если у вас его нет.

Теперь вы можете попробовать его в действии.

Подключение к SSH-серверу в Windows 10.

Откройте свой ssh-клиент. Вы можете запустить его на том же компьютере, например, используя встроенный клиент OpenSSH или запустить его с другого компьютера в своей сети.

В общем случае синтаксис для клиента консоли OpenSSH выглядит следующим образом:

Имя пользователя ssh @ host -p

В моем случае команда выглядит следующим образом:

ssh [email protected]

Где alex_ — мое имя пользователя Windows, а — это IP-адрес моего ПК с Windows 10. Я подключусь к нему с другого компьютера, Windows 10.

Вход.

Сервер запускает классические консольные команды Windows, например: more, type, ver, copy.

Но я не могу запустить FAR Manager. Он выглядит совсем сломанным:

Еще одно интересное примечание: вы можете запускать приложения с графическим интерфейсом, такие как проводник. Если вы вошли в ту же учетную запись пользователя, которую используете для SSH, они будут запускаться на рабочем столе:

Встроенный SSH-сервер определенно интересен. Он позволяет управлять компьютером сWindows 10, без установки сторонних инструментов, как rdesktop и др..

Начиная с этой версии, встроенный SSH-сервер в Windows 10 находится на стадии BETA, поэтому в будущем он должен стать, более интересным и полезным.

Сервер SFTP

Сервер SFTP встроен в OpenSSH. Он реализуется с помощью программы sftp-server. Для того чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле sshd_config в качестве подсистемы:

Как правило, это строка уже указана в конфигурационном файле sshd по умолчанию, так что SFTP работает сразу и не требует никаких дополнительных действий для включения.

Настройка ChrootDirectory в SFTP для пользователей корпоративного Website Hosting (веб хостинг).

А вот группу-владельца chroot-папки можно задать любую.

Расшифровка параметров sshd_config

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

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

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

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

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

Читайте также:  Детальная процедура установки Windows 8,1 с флешки

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

Кли­ент под­клю­чал­ся по 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 или еще что‑то цен­тра­лизо­ван­ное, рекомен­дую завес­ти отдель­ную учет­ку и огра­ничить ее в пра­вах на вся­кий слу­чай.

Лучшие бесплатные серверы SFTP и FTPS для Linux

  • MySecureShell
  • vsftp
  • ProFTPd
  • PureFTPD
  • VandDyke VShell

Поскольку SFTP работает на SSH, большинство дистрибутивов Linux обладают предустановленным SFTP. Другая история с FTPS, здесь требуется выделенный сервер FTP и поддержка TLS. Поскольку на Linux настроить SFTP так легко, нет смысла пользоваться FTPS.

Применение OpenSSH

На стандартной системе Linux большинство пользователей могут применять любой клиент SFTP для подключения к серверу и передачи файлов в домашнюю папку и из неё. Однако, разрешение дистанционного доступа обычно считается риском для безопасности, поэтому многие системные администраторы запрещают его. Проще всего это сделать при помощи запрета на доступ к оболочке или блокировки порта SFTP (22, как и у SSH) определённых IP-адресов.

Лучшие бесплатные серверы SFTP и FTPS для Linux

Если таких ограничений нет, любой клиент SFTP может подключиться к порту 22 и сервер SFTP будет работать без проблем.

$ sftp [email protected] [email protected]’s password: Connected to sftp> pwd Remote working directory: /home/test-sftp sftp>

14. MySecureShell

Недостаток простоты настройки SFTP на большинстве дистрибутивов Linux заключается в том, что SSH доступно для применения. Это требует определённого уровня доверия к пользователям, которое не всегда есть. Если у вас есть неизвестные или ненадёжные пользователи SFTP, вы можете наложить ограничения на их доступ к системе. Для этого есть много методов, вроде возможности запуска движка SFTP при отключении обычных логинов SSH. Или можно использовать приложение вроде MySecureShell.

Читайте также:  Расставляем приоритеты: как установить «винду» с флешки через BIOS

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

$ sudo apt-get install mysecureshell [sudo] password for jdw: Reading package lists… Done Building dependency tree Reading state information… Done The following NEW packages will be installed: mysecureshell

После установки требуются некоторые изменения в файле конфигурации по адресу /etc/ssh/sftp_config и после этого можно начинать работать.

15. vsftp

Лучшие бесплатные серверы SFTP и FTPS для Linux

Vsftp представляет собой бесплатный сервис FTP для Unix-подобных систем, включая Linux. Он известен как очень быстрый, стабильный и расходующий мало системных ресурсов. Богатый список функциональных возможностей включает поддержку виртуальных пользователей, прослушивание любого интерфейса, настройку под каждого пользователя отдельно и троттлинг для предотвращения DOS-атак.

Многие популярные дистрибутивы Linux используют vsftp как свой сервер FTP, что говорит о его стабильности и защищённости. Поблагодарить за это стоит поддерживающего приложение Криса Эванса, который самостоятельно находил уязвимости безопасности.

Vsftp есть во многих дистрибутивах Linux и может быть установлен через менеджер пакетов.

$ sudo apt-get install vsftpd Reading package lists… Done Building dependency tree Reading state information… Done The following NEW packages will be installed: vsftpd

Как и в случае с большинством инструментов Linux, необходим быстрый запуск через файл /etc/ для задания некоторых базовых настроек, после чего можно начинать работу с сервером vsftp.

16. Настройка ProFTPd для использования SFTP

ProFTP разработан с нуля для замены wu-ftp в качестве широко применяемого сервера FTP. Wu-ftp стал неудобен после многих лет модификаций, из-за которых его нельзя было назвать защищённым. Пришлось создавать клиент FTP с нуля.

ProFTP вдохновлён веб-сервером Apache. Это можно увидеть по формату файлов конфигурации и по тому, что для расширения функциональности загружаются модули. Нужно использовать ProFTP с загруженным модулем mod_sftp, чтобы получить функциональность SFTP.

Лучшие бесплатные серверы SFTP и FTPS для Linux

Сайт ProFTP содержит примеры конфигураций для начала работы.

FTP остается важной частью инструментов интернета, хотя здесь и не хватает защищённости. Как протокол HTTP получил поддержку TLS и превратился в HTTPS, так и FTP объединил TLS и SSH для обеспечения защиты и шифрования. Мало какие другие инструменты способны обеспечить простую передачу крупных файлов. Многие организации ещё долго будут продолжать пользоваться SFTP или FTPS.

17. PureFTPD

PureFTPD представляет собой открытый сервер SFTP, который работает почти на всех версиях Unix-подобных операционных систем, включая Linux, BSD, Solaris и другие. Это проект с открытым исходным кодом, который предоставляет совместимость со стандартами серверов FTP. Интерфейс переведён на множество языков.

PureFTP лишён ограничений и вся функциональность доступна изначально. Среди самых полезных функций возможность замедлять подключение для экономии трафика, возможность работать в виртуальной файловой системе (chroot), установка лимитов на загрузку и скачивание и т.д.