Openssh server configuration for windows 10 1809 and windows server 2019

Sshd_config: Конфигурационный файл сервера OpenSSH

Вы можете изменить настройки сервере OpenSSH в конфигурационном файле %programdata%sshsshd_config.

Например, чтобы запретить SSH подключение для определенного доменного пользователя (и всех пользователей указанного домена), добавьте в конце файле директивы:

DenyUsers winitproadmin@192.168.1.10 DenyUsers corp*

Чтобы разрешить подключение только для определенной доменной группы:

AllowGroups winitprosshadmins

Либо можете разрешить доступ для локальной группы:

AllowGroups sshadmins

Можно запретить вход под учетными записями с правами администратора, в этом случае для выполнения привилегированных действий в SSH сессии нужно делать runas.

DenyGroups Administrators

Следующие директивы разрешают SSH доступ по ключам (доступ к Windows через SSH по ключам рассмотрим подробно в следующей статье) и по паролю:

PubkeyAuthentication yes PasswordAuthentication yes

Вы можете изменить порт, на котором принимает подключения OpenSSH в конфигурационном файле sshd_config в директиве Port.

После любых изменений в конфигурационном файле sshd_config нужно перезапускать службы sshd:

Показ публичного ключа из приватного

Опция -y прочитает файл OpenSSH формата с приватным ключом и напечатает в стандартный вывод публичный ключ OpenSSH.

Также с помощью опции -f нужно указать путь до приватного ключа, из которого будет извлечён соответствующий ему публичный ключ:

ssh-keygen -y -f ПРИВАТНЫЙ-КЛЮЧ

Например, приватный ключ помещён в файл id_rsa, тогда команда извлечения из него публичного ключа следующая:

ssh-keygen -y -f id_rsa

Вы можете столкнуться с ошибкой:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions

Она означает, что приватный ключ доступен для чтения кому угодно и программа ssh-keygen отказывается работать с ним по этой причине. Чтобы исправить эту ошибку, просто установите на файл с приватным ключом права доступа 600:

chmod 600 id_rsa

Действия по включению OpenSSH в Windows 10

С функциями Windows:

Перейдите в «Настройки»> «Приложения»> «Приложения и функции» или перейдите по этому адресу:

Теперь нажмите Управление дополнительными функциями.

Выберите Добавить функцию. Это приведет вас к новой странице.

Прокрутите вниз до Клиент OpenSSH (бета) и Сервер OpenSSH (бета) .

Установите их оба и перезагрузите компьютер

Это загрузит и установит все компоненты по этому пути:

Теперь вы можете использовать Powershell или командную строку (CMD), чтобы перейти к указанному пути, а затем начать работать с SSH, как в Linux.

С подсистемой Windows для Linux (WSL)

Установите флажок Подсистема Windows для Linux и нажмите ОК.

Перейдите в магазин Microsoft Store и найдите Ubuntu .

Установите это приложение.

Теперь выполните поиск Ubuntu в меню «Пуск» или в Cortana, чтобы запустить командную строку Linux Bash и использовать возможности SSH.

Наконец, похоже, что Microsoft усиливает использование технологий с открытым исходным кодом, интегрируя их непосредственно в Windows 10 и улучшая их для разработчиков. Это делает утверждение Терри Майерсона (исполнительного вице-президента группы разработчиков Windows в Microsoft) верным, что

И мы не можем дождаться добавления более полезных функций, подобных этой, во встроенную Windows 10!

Установка сервера OpenSSH в Windows

Рассмотрим, как установить компонент OpenSSH Server в Windows 10 1903 (Windows Server 2019 все выполняется аналогично).

Пакет OpenSSH (как и RSAT) уже включен в данные версии Windows в виде Feature on Demand (FoD).

При наличии прямого Интернет-подключения вы можете установить сервер OpenSSH с помощью PowerShell

Или при помощи DISM:

В Windows 10 этот компонент также можно установить через панель Параметры (Приложения -> Управление дополнительными компонентами -> Добавить компонент). Найдите в списке Open SSH Server и нажмите кнопку Install).

Чтобы проверить, что OpenSSH сервер установлен, выполните:

State : Installed

Windows Configurations in sshd_config

In Windows, sshd reads configuration data from %programdata%\ssh\sshd_config by default, or a different configuration file may be specified by launching sshd.exe with the -f parameter.
If the file is absent, sshd generates one with the default configuration when the service is started.

The elements listed below provide Windows-specific configuration possible through entries in sshd_config.
There are other configuration settings possible in that are not listed here, as they are covered in detail in the online Win32 OpenSSH documentation.

AllowGroups, AllowUsers, DenyGroups, DenyUsers

Controlling which users and groups can connect to the server is done using the AllowGroups, AllowUsers, DenyGroups and DenyUsers directives.
The allow/deny directives are processed in the following order: DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.
All account names must be specified in lower case.
See PATTERNS in ssh_config for more information on patterns for wildcards.

When configuring user/group based rules with a domain user or group, use the following format: .
Windows allows multiple of formats for specifying domain principals, but many conflict with standard Linux patterns.
For that reason, * is added to cover FQDNs.
Also, this approach uses «?», instead of @, to avoid conflicts with the username@host format.

Work group users/groups and internet-connected accounts are always resolved to their local account name (no domain part, similar to standard Unix names).
Domain users and groups are strictly resolved to NameSamCompatible format — domain_short_name\user_name.
All user/group based configuration rules need to adhere to this format.

Examples for domain users and groups

Examples for local users and groups

AuthorizedKeysFile

The default is «.ssh/authorized_keys .ssh/authorized_keys2». If the path is not absolute, it is taken relative to user’s home directory (or profile image path). Ex. c:\users\user. Note that if the user belongs to the administrator group, %programdata%/ssh/administrators_authorized_keys is used instead.

ChrootDirectory (Support added in v7.7.0.0)

This directive is only supported with sftp sessions. A remote session into cmd.exe wouldn’t honor this. To set up a sftp-only chroot server, set ForceCommand to internal-sftp. You may also set up scp with chroot, by implementing a custom shell that would only allow scp and sftp.

HostKey

The defaults are %programdata%/ssh/ssh_host_ecdsa_key, %programdata%/ssh/ssh_host_ed25519_key, %programdata%/ssh/ssh_host_dsa_key, and %programdata%/ssh/ssh_host_rsa_key. If the defaults are not present, sshd automatically generates these on a service start.

SyslogFacility

If you need file based logging, use LOCAL0. Logs are generated under %programdata%\ssh\logs.
For any other value, including the default value, AUTH directs logging to ETW. For more info, see Logging Facilities in Windows.

Not supported

The following configuration options are not available in the OpenSSH version that ships in Windows Server 2019 and Windows 10 build 1809:

Генерация и добавление SSH ключей при создании виртуальной машины

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

В процессе создания виртуальной машины в разделе SSH ключ вам будет предложено:

— добавить уже хранящийся в личном кабинете ключ, выбрав его из выпадающего списка;

— добавить уже имеющийся в локальном хранилище ключ;

— сгенерировать новый ключ;

1. При нажатии на «Добавить SSH ключ» откроется диалоговое окно. Добавьте открытую часть SSH ключа, введите имя ключа для идентификации его в нашей системе и сохраните его.

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

2. При нажатии на кнопку «Сгенерировать SSH ключ», откроется диалоговое окно, введите «Имя» ключа для идентификации его в системе.

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

После добавления или генерации нового SSH ключа, ключи будут появится в разделе «Ключи SSH».

Тестирование SFTP-сервера

Давайте проверим, работает ли SFTP-сервер. Для этого вам нужен SFTP-клиент. Я буду испоьзовать бесплатный SFTP-клиент WinSCP, но вы можете использовать любой другой, поддерживающий SFTP, например, FileZilla, FTP Rush или файловый менеджер с поддержкой SFTP, такой как Altap Salamander.

Для Android есть много вариантов; Total Commander и Ghost Commander имеют плагины SFTP, в то время как некоторые приложения, такие как Amaze File Manager или X-plore File Manager, имеют встроенную функцию SFTP.

Тестирование SFTP-сервера в Windows

Запустите WinSCP и выберите «SFTP» в качестве протокола. В поле имени хоста введите «localhost» (если вы тестируете компьютер, на котором вы установили OpenSSH). Вам нужно будет ввести имя пользователя и пароль Windows, чтобы программа могла подключаться к серверу. Нажмите сохранить и выберите логин.

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

Тестирование SFTP-сервера в Android

Давайте использовать Amaze File Manager с открытым исходным кодом. Нажмите кнопку + и выберите «Облачное соединение». Выберите соединение SCP / SFTP, и должно появиться всплывающее окно. Найдите IP-адрес вашего компьютера с помощью командной строки и команды IP-конфигурации. Например, мой компьютер имеет адрес 192.168.1.9

Введите его в поле сервера, оставьте номер порта как 22 и введите имя пользователя и пароль Windows в соответствующих полях. Он должен подключиться к вашему компьютеру, и вы сможете получить доступ ко всему содержимому, доступ к которому может получить учетная запись Windows.

Подключение по SSH с Windows 10, Linux OS или Mac OS

Внимание! Если вы используете Linux OS или Mac OS, перейдите к шагу №7. В Windows 10 есть встроенный «OpenSSH» клиент, который позволяет получать доступ к серверу через консоль, так же, как и на Linux OS

По умолчанию этот компонент не активирован

В Windows 10 есть встроенный «OpenSSH» клиент, который позволяет получать доступ к серверу через консоль, так же, как и на Linux OS. По умолчанию этот компонент не активирован.

Для его установки следуйте шагам ниже.

1. Откройте «Параметры».

2. Перейдите в раздел «Приложения», нажмите «Дополнительные возможности».

3. В списке найдите «OpenSSH Client», нажмите для раскрытия подробного описания.

4. Нажмите «Установить».

5. Дождитесь завершения установки. После того, как «SSHClient» будет установлен, перезагрузите компьютер для корректного применения настроек. Для командной строки станет доступна утилита SSH.

6. Откройте командную строку/терминал и введите команду со своими значениями:

 «ssh username@192.168.1.92» — для подключения с помощью пароля; «ssh username@192.168.1.92 -i «C:Usersusername.sshid_rsa»»: — для подключения с помощью ключа.

username

Имя пользователя, указано справа от кнопки «Открыть консоль»

192.168.1.92

Плавающий IP-адрес вашей виртуальной машины.

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

C:Usersusername.sshid_rsa

Путь к файлу с приватным ключом в вашем локальном хранилище.
Ключ должен быть в формате PEM.

7. Утилита предложит добавить устройство в список известных, напишите «yes», чтобы добавить, «no», чтобы не добавлять. Нажмите «Enter».

8. (Пункт только для тех, кто подключается с помощью пароля) введите пароль, который вы задали при создании машины

9. Вы подключились к виртуальной машине.

Подключение к Windows 10 через SSH

Теперь вы можете попробовать подключиться к своей Windows 10 через SSH клиент (я использую putty, но можно пользоваться встроенным ssh клиентом Windows).

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

Нажимаем Да, и в открывшееся окне авторизуемся под пользователем Windows.

При успешном подключении запускается командная оболочка cmd.exe со строкой-приглашением.

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

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

Чтобы изменить Shell по умолчанию в OpenSSH с cmd.exe на PowerShell, внесите изменение в реестр такой командой:

Осталось перезапустить SSH подключение и убедиться, что при подключении используется командный интерпретатор PowerShell (об этом свидетельствует приглашение PS C:\Users\admin> ).

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

Как конвертировать .ppk ключ в OpenSSH ключ

Ключ .ppk генерируется при экспорте ключей из PuTTY.

Пример файла .ppk:

Конвертация ключей из файла .ppk в формат OpenSSH в Linux

Для конвертации формата .ppk в формат OpenSSH можно использовать утилиту puttygen, которая включена в пакет Putty. Следовательно, нам нужно установить PuTTY

Linux: с вашим менеджером пакетов установите PuTTY (или более минимальный пакет PuTTY-tools):

Debian, Kali Linux, Linux Mint, Ubuntu и их производные:

sudo apt install putty-tools

Дистрибутивы на основе RPM:

yum install putty

Gentoo:

emerge putty

Arch Linux, BlackArch и их производные:

sudo pacman -S putty

OS X: Установите Homebrew, затем запустите

brew install putty

Поместите ваши ключи в какую-нибудь директорию, например, в домашнюю папку. Теперь конвертируем PPK ключи в SSH пару.

Для извлечения приватного ключа:

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

и для извлечения публичного ключа:

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

Переместите эти ключи в ~/.ssh и убедитесь, что для приватного ключа ограничены права записи:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

Конвертация ключей из файла .ppk в формат OpenSSH в Windows

Откройте PuTTYgen, нажмите кнопку «Load» и выберите файл .ppk с ключами.

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

Теперь в меню перейдите в «Conversions» → «Export OpenSSH key» и сохраните приватный ключ.

Скопируйте ваш приватный ключ в файл ~/.ssh/id_dsa (или id_rsa).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: