Настройка сервера Windows ssh
Обновлено: 21.11.2024
В предыдущей статье я описал, как установить Open SSH в Windows 10 в качестве дополнительной функции и использовать ее. Сегодня я продолжу работу с OpenSSH и шаг за шагом опишу, как установить OpenSSH Server в Windows 10 и настроить его.
Сервер и клиент OpenSSH включены в Windows 10 версии 1809 и более поздних версий, а также в Windows Server 2019
Как определить, установлен ли Windows 10 Open SSH Server из графического интерфейса пользователя
Перед началом установки лучше определить, установлен ли уже OpenSSH Server.
Как определить, установлен ли сервер OpenSSH из Powershell
Если вам нравится Powershell, вы можете использовать следующую команду, чтобы определить, установлен ли уже OpenSSH Server
Get-WindowsCapability -Online | ? имя - как "openssh*"
Проверьте состояние состояния, чтобы определить, установлено ли приложение или нет
Как установить в Windows 10 сервер OpenSSH из графического интерфейса
После определения того, что сервер OpenSSH не установлен, мы можем приступить к установке сервера OpenSSH
Как установить в Windows 10 сервер OpenSSH из Powershell
Если вы хотите продолжить установку OpenSSH Server из Powershell, вы можете сделать это с помощью одной команды.
Введите следующую команду и дождитесь завершения установки
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Как запустить и настроить сервер OpenSSH в Windows 10
Теперь пришло время настроить сервер OpenSSH, чтобы начать его использовать.
- Откройте команду Powershell от имени администратора
- Введите следующую команду, чтобы запустить службу сервера OpenSSH
Start-service sshd - Введите следующую команду, чтобы добавить автоматический запуск в службу
- Set-Service -Name sshd -StartupType 'Automatic'
- Введите следующую команду, чтобы найти правило для сервера OpenSSH в брандмауэре Windows и убедитесь, что оно разрешено
Get-NetFirewallRule -Name *ssh*
Как подключиться по ssh из Linux к Windows 10 OpenSSHServer
Реальность такова, что большинство из них используют ssh с аутентификацией по открытому ключу вместо аутентификации по паролю, поскольку это предотвращает атаки.
Но по умолчанию после установки сервер OpenSSH использует аутентификацию по паролю.
Мы сохраним аутентификацию по паролю, чтобы иметь возможность подключаться через конфигурацию, которую необходимо выполнить для использования аутентификации с открытым ключом
Итак, чтобы лучше понять и повысить безопасность, давайте объясним, как генерировать ключи ssh и использовать их для подключения к серверу OpenSSH
- Войдите в Windows 10 OpenSSH Server и создайте пользователей, которых вы хотите подключить.
- Если у вас есть пользователи домена и вы уже решили, кого следует подключить, не выполняйте предыдущий шаг.
- Войдите в систему Linux, которую вы будете использовать для подключения к серверу OpenSSH
- Введите следующую команду, чтобы начать генерировать ключи
- генератор ключей ssh
- Чтобы создать аутентификацию, необходимо скопировать открытый ключ на сервер Openssh по следующему пути пользователя, который будет подключаться из Linux. Обратите внимание, что мы должны создать пользователя, прежде чем переходить к этому шагу.
- Имя файла открытого ключа должно быть authorized_keys в папке .ssh
- C:\Users\ \.ssh
- scp ~/.ssh/id_rsa.pub user1@192.168.50.151:"c:\users\user1\.ssh\authorized_keys"
- Войдите на сервер Openssh и убедитесь, что авторизованные_ключи созданы в .ssh папки пользователя.
- Теперь мы должны настроить разрешение author_keys, потому что если вы попытаетесь подключиться с его помощью, вы получите сообщение об ошибке Отказано в доступе (publickey,keyboard-interactive)
- Если мы проверим права доступа к файлу author_keys, мы увидим, что у него есть доступ к пользователю, который будет подключаться в моем сценарии, это user1 и администратор домена.
- Но эти пользователи должны быть удалены.
- Если вы выполните поиск в Google, то обнаружите, что большинство блогов и форумов говорят о том, что вы можете загрузить модуль Powershell OpenSSHUtil, но этот модуль устарел, и если вы попытаетесь загрузить его, это не удастся.
- Прежде чем пытаться удалить доступ пользователей, в файле author_keys необходимо отключить наследование. Если вы этого не сделаете и попытаетесь удалить пользователей с помощью команды icacls, вы получите информацию о том, что успешно продолжить работу с файлом, но если вы проверите разрешение, останется прежним без удаления пользователей.
- Щелкните правой кнопкой мыши в файле author_keys – Свойства.
- Нажмите кнопку "Дополнительно".
- Нажмите "Отключить наследование".
- Нажмите Преобразовать унаследованные разрешения в явные разрешения для этого объекта.
- Снова войдите в систему Linux, которая будет использовать его для подключения, и введите следующую команду для подключения с помощью ssh и аутентификации по паролю на данный момент
- пользователь ssh1@192.168.50.151
- Icacls "authorized_keys" /remove user1
- Icacls "authorized_keys" /удалить администратора
- Последний шаг – отключить аутентификацию по паролю и включить аутентификацию по открытому ключу из файла ssh_config, чтобы можно было авторизоваться только с помощью ключей ssh, а не пароля.
Как отключить аутентификацию по паролю в OpensshServer
После базовой настройки OpensshServer для автоматической установки службы и проверки правила в брандмауэре Windows вы можете перейти к более сложной настройке.
Давайте объясним, как можно изменить конфигурацию сервера Openssh.
- Затем введите следующие команды, чтобы перезапустить службу Openssh Server
- Остановить службу sshd
- Запуск службы sshd
- Давайте подключимся в Linux и введите команду для подключения через ssh.
- Если все работает без проблем, вы увидите запрос пароля перед подключением
Если вам не удалось подключиться с помощью аутентификации с открытым ключом, лучшим решением будет использовать журналы SSH, чтобы определить причину проблемы.
Это было отличие от предыдущих версий, и теперь журналы SSH расположены в журналах событий Windows вместо C:\ProgramData\ssh\logs\sshd.log, и вы можете найти их в журналах приложений и служб — – Журналы OpenSSH
Я надеюсь, что моя статья поможет вам или поможет узнать что-то новое или решить проблему.
В этой статье рассматривается специфичная для Windows конфигурация сервера OpenSSH (sshd).
Настройка оболочки по умолчанию для OpenSSH в Windows
Командная оболочка по умолчанию предоставляет интерфейс, который пользователь видит при подключении к серверу с помощью SSH. Исходной Windows по умолчанию является командная оболочка Windows (cmd.exe). Windows также включает PowerShell и Bash, а также сторонние командные оболочки для Windows, которые можно настроить в качестве оболочки по умолчанию для сервера.
Чтобы установить командную оболочку по умолчанию, сначала убедитесь, что папка установки OpenSSH указана в системном пути. Для Windows папка установки по умолчанию — %systemdrive%\WindowsDirectory\System32\openssh. Следующая команда показывает текущую настройку пути и добавляет к ней папку установки OpenSSH по умолчанию.
Командная оболочка Используемая команда Команда path PowerShell $env:path Настройка оболочки ssh по умолчанию выполняется в реестре Windows путем добавления полного пути к исполняемому файлу оболочки в Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH в строковом значении DefaultShell.
Например, следующая команда PowerShell задает в качестве оболочки по умолчанию powershell.exe:
Конфигурации Windows в sshd_config
В Windows sshd по умолчанию считывает данные конфигурации из %programdata%\ssh\sshd_config, или можно указать другой файл конфигурации, запустив sshd.exe с параметром -f. Если файл отсутствует, sshd создает его с конфигурацией по умолчанию при запуске службы.
Элементы, перечисленные ниже, обеспечивают специфичную для Windows конфигурацию, доступную через записи в sshd_config. Возможны и другие параметры конфигурации, которые здесь не перечислены, поскольку они подробно описаны в онлайн-документации Win32 OpenSSH.
AllowGroups, AllowUsers, DenyGroups, DenyUsers
Управление тем, какие пользователи и группы могут подключаться к серверу, осуществляется с помощью директив AllowGroups, AllowUsers, DenyGroups и DenyUsers. Директивы allow/deny обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups и, наконец, AllowGroups. Все имена учетных записей должны быть указаны в нижнем регистре. Дополнительные сведения о шаблонах подстановочных знаков см. в разделе ШАБЛОНЫ в ssh_config.
При настройке правил на основе пользователя/группы с пользователем или группой домена используйте следующий формат: пользователь?домен* . Windows допускает несколько форматов для указания участников домена, но многие из них конфликтуют со стандартными шаблонами Linux. По этой причине * добавляется для покрытия полных доменных имен. Кроме того, этот подход использует "?" вместо @, чтобы избежать конфликтов с форматом имя_пользователя@хост.
Пользователям/группам рабочих групп и учетным записям, подключенным к Интернету, всегда разрешается имя их локальной учетной записи (без доменной части, аналогично стандартным именам Unix). Пользователи и группы домена строго разрешаются в формате NameSamCompatible — короткое_имя_домена\имя_пользователя. Все правила конфигурации для пользователей/групп должны соответствовать этому формату.
Примеры для пользователей и групп домена
Примеры для локальных пользователей и групп
Методы аутентификации
Для Windows OpenSSH единственными доступными методами аутентификации являются «пароль» и «открытый ключ».
Файл авторизованных ключей
По умолчанию используется ".ssh/authorized_keys .ssh/authorized_keys2". Если путь не является абсолютным, он берется относительно домашнего каталога пользователя (или пути к изображению профиля), например. C:\Пользователи\имя пользователя. Обратите внимание: если пользователь принадлежит к группе администраторов, вместо него используется %programdata%/ssh/administrators_authorized_keys.
ChrootDirectory (поддержка добавлена в версии 7.7.0.0)
Эта директива поддерживается только сеансами sftp. Удаленный сеанс в cmd.exe не будет учитывать это. Чтобы настроить chroot-сервер только для sftp, установите для ForceCommand значение internal-sftp. Вы также можете настроить scp с помощью chroot, внедрив собственную оболочку, которая разрешает только scp и sftp.
Ключ хоста
Значения по умолчанию: %programdata%/ssh/ssh_host_ecdsa_key, %programdata%/ssh/ssh_host_ed25519_key, %programdata%/ssh/ssh_host_dsa_key и %programdata%/ssh/ssh_host_rsa_key. Если значения по умолчанию отсутствуют, sshd автоматически создает их при запуске службы.
Соответствие
Обратите внимание на правила шаблона в этом разделе. Имена пользователей и групп должны быть в нижнем регистре.
Разрешить корневой вход
Неприменимо в Windows. Чтобы запретить вход администратора, используйте директиву Administrators with DenyGroups.
Системный журнал
Если вам нужно ведение журнала на основе файлов, используйте LOCAL0. Журналы создаются в папке %programdata%\ssh\logs. Для любого другого значения, включая значение по умолчанию, AUTH направляет ведение журнала в ETW. Дополнительные сведения см. в разделе Средства ведения журналов в Windows.
Не поддерживается
Следующие параметры конфигурации недоступны в версии OpenSSH, поставляемой в составе Windows Server 2019 и Windows 10 сборки 1809:
Недавно Microsoft выпустила порт OpenSSH для Windows. Вы можете использовать этот пакет для настройки сервера SFTP/SSH в Windows.
Установка SFTP/SSH-сервера
В Windows 11 и Windows 10
- В Windows 11:
- Перейдите в раздел Приложения > Дополнительные функции и нажмите Просмотреть функции.
- Найдите компонент «Сервер OpenSSH», выберите его, нажмите Далее, а затем нажмите Установить.
- Перейдите в раздел Приложения > Приложения и функции > Дополнительные функции и нажмите Добавить функцию.
- Найдите компонент «Сервер OpenSSH», разверните его и выберите Установить.
Двоичные файлы устанавливаются в %WINDIR%\System32\OpenSSH . Файл конфигурации ( sshd_config ) и ключи хоста устанавливаются в %ProgramData%\ssh (только после первого запуска сервера).
Вы все равно можете использовать следующую ручную установку, если хотите установить более новую версию OpenSSH, чем та, которая встроена в Windows.
В более ранних версиях Windows
- Загрузите последние двоичные файлы OpenSSH для Windows (пакет OpenSSH-Win64.zip или OpenSSH-Win32.zip )
- От имени администратора извлеките пакет в C:\Program Files\OpenSSH
- От имени администратора установите службы sshd и ssh-agent:
Настройка SSH-сервера
- Разрешить входящие подключения к серверу SSH в брандмауэре Windows:
- При установке в качестве дополнительной функции правило брандмауэра "Сервер OpenSSH SSH (sshd)" должно было быть создано автоматически. Если нет, перейдите к созданию и включению правила следующим образом.
- Либо выполните следующую команду PowerShell от имени администратора:
Замените C:\Windows\System32\OpenSSH\sshd.exe фактическим путем к файлу sshd.exe ( C:\Program Files\OpenSSH\ssh. exe , если бы вы следовали приведенным выше инструкциям по ручной установке). - или выберите Панель управления > Система и безопасность > Брандмауэр Защитника Windows1> Дополнительные параметры > Правила для входящего трафика и добавьте новое правило для порта 22.
- Откройте Панель управления > Система и безопасность > Администрирование и откройте Службы. Найдите службу OpenSSH SSH Server.
- Если вы хотите, чтобы сервер запускался автоматически при включении компьютера: выберите Действие > Свойства. В диалоговом окне "Свойства" измените Тип запуска на Автоматически и подтвердите выбор.
- Запустите службу OpenSSH SSH Server, нажав кнопку Запустить службу.
Настройка аутентификации с открытым ключом SSH
Следуйте общему руководству по настройке аутентификации с открытым ключом SSH на сервере *nix OpenSSH со следующим отличием:
- Создайте папку .ssh (для файла author_keys) в папке профиля учетной записи Windows (обычно в C:\Users\username\.ssh ).2
- Для разрешений на папку .ssh и файл author_keys важны разрешения Windows ACL, а не простые разрешения *nix. Настройте ACL таким образом, чтобы соответствующая учетная запись Windows была владельцем папки и файла и была единственной учетной записью, имеющей доступ на запись к ним.Учетная запись, которая запускает службу OpenSSH SSH Server (обычно это SYSTEM или sshd ), должна иметь доступ для чтения к файлу.
- Тем не менее, с конфигурацией Win32-OpenSSH по умолчанию в sshd_config установлено исключение для учетных записей в группе администраторов. Для них сервер использует другое расположение для файла авторизованных ключей: %ALLUSERSPROFILE%\ssh\administrators_authorized_keys (т. е. обычно C:\ProgramData\ssh\administrators_authorized_keys ).
Подключение к серверу
Поиск ключа хоста
Перед первым подключением узнайте отпечаток ключа хоста сервера, используя ssh-keygen.exe для каждого файла.
В командной строке Windows используйте:
При необходимости замените %WINDIR%\System32 на %ProgramFiles% .
В PowerShell используйте:
Замените $env:WINDIR\System32 на $env:ProgramFiles , если это уместно.
Вы получите следующий вывод:
Подключение
Запустите WinSCP. Появится диалоговое окно входа. В диалоговом окне:
- Убедитесь, что выбран узел Новый сайт.
- Убедитесь, что на новом узле сайта выбран протокол SFTP.
- Введите IP-адрес вашего компьютера/сервера (или имя хоста) в поле Имя хоста.
- Введите имя своей учетной записи Windows в поле Имя пользователя. Возможно, его придется вводить в формате пользователь@домен, если он работает в домене.
- Для аутентификации с открытым ключом:
- Нажмите кнопку Дополнительно, чтобы открыть диалоговое окно "Дополнительные настройки сайта" и перейдите на страницу SSH > Аутентификация.
- В поле Файл закрытого ключа выберите файл закрытого ключа.
- Отправить диалоговое окно дополнительных настроек сайта с помощью кнопки ОК.
- Введите пароль своей учетной записи Windows в поле Пароль.
- Если у вашей учетной записи Windows нет пароля, вы не можете пройти аутентификацию с использованием пароля (т. е. с пустым паролем), вам необходимо использовать аутентификацию с открытым ключом.
Если вы не можете пройти аутентификацию на сервере и использовать Windows 10 в режиме разработчика, убедитесь, что ваш сервер OpenSSH не конфликтует с внутренним SSH-сервером, используемым в режиме разработчика. . Возможно, вам потребуется отключить службы Windows SSH Server Broker и SSH Server Proxy. Или запустите сервер OpenSSH на порту, отличном от 22.
Если вам когда-либо приходилось подключаться по SSH к компьютеру с Windows, Джек Валлен покажет вам, как сделать это возможным с помощью PowerShell.
Изображение: Funtap/ShutterstockОбязательно к прочтению статьи о безопасности
Использовать SSH для удаленного доступа к серверу Linux невероятно просто. Даже установка самого SSH-сервера не составляет труда. Но когда вам нужно подключиться по SSH к машине с Windows, все становится немного сложнее. Это не так уж сложно, но и далеко не так просто, как в Linux.
Я проведу вас через процесс установки сервера OpenSSH в Windows 10, настрою его для запуска при загрузке, а затем покажу, как войти в систему с компьютера с Linux. Возможно, вам никогда не понадобится это делать, но когда вы это сделаете, вы будете рады, что знаете об этом.
ПОСМОТРЕТЬ: Набор для найма: сетевой инженер (TechRepublic Premium)
Что вам понадобится
Все, что вам нужно, — это запущенный экземпляр Windows 10, пользователь с правами администратора и второй компьютер для входа в систему.
Давайте приступим к работе.
Как установить OpenSSH в Windows 10
Первое, что нужно сделать, это открыть PowerShell с правами администратора. Нажмите кнопку «Пуск» и введите PowerShell. Когда вы увидите запись, нажмите «Запуск от имени администратора», а затем нажмите «Да». Перед установкой мы должны узнать, какие версии программного обеспечения доступны, что можно сделать с помощью команды:
Get-WindowsCapability -Online | Где-Имя объекта - например, «OpenSSH*»
В терминале PowerShell вы должны увидеть следующее:
Сказанное выше означает, что ни клиент, ни сервер OpenSSH (версия 0.0.1.0) не установлены. Давайте это исправим. Сначала установите клиент OpenSSH с помощью:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Далее установите сервер OpenSSH с помощью:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Теперь, если вы введете команду:
Get-WindowsCapability -Online | Где-Имя объекта - например, «OpenSSH*»
И клиент, и сервер должны быть указаны как установленные.
Далее нам нужно запустить сервер OpenSSH с помощью команды:
Теперь мы настроим сервер OpenSSH на запуск при загрузке. Для этого выполните:
Set-Service -Name sshd -StartupType 'Automatic'
Как подключиться по SSH к вашему компьютеру с Windows
Здесь все становится немного запутанным.Во-первых, вам нужно узнать, каково ваше фактическое имя учетной записи пользователя. Для этого откройте меню «Пуск» и введите cmd. Когда откроется окно терминала, ваше имя пользователя будет указано в следующем виде:
Где USERNAME – ваше фактическое имя пользователя.
Далее вам понадобится пароль, который вы использовали для настройки своей учетной записи в Windows 10. Это может быть пароль Hotmail, пароль Skype или пароль OneDrive.
Имея на руках обе эти части информации, перейдите на свой Linux (или другой компьютер Windows с установленным OpenSSH) и войдите в систему с помощью:
Где USERNAME — ваше имя пользователя Windows 10, а IP — IP-адрес вашего компьютера с Windows. Если вы не знаете IP-адрес вашего компьютера с Windows, вернитесь в окно терминала cmd в Windows и введите команду:
IP-адрес должен быть указан в выходных данных.
Вам будет предложено ввести пароль пользователя Windows. Если вы попробуете ввести этот пароль, и это не удастся, вам, возможно, придется убедиться, что ваш компьютер с Windows разрешает вход с паролем. Часто рабочие столы Windows 10 настраиваются для входа в систему с помощью лица Windows Hello, отпечатка пальца, PIN-кода или ключа безопасности. Пароль часто не учитывается. Чтобы разрешить вход по паролю, сделайте следующее:
- Откройте настройки.
- Перейти к учетным записям.
- Нажмите "Параметры входа".
- Отключите требование входа в Windows Hello для учетных записей Microsoft.
- Перезагрузите компьютер.
При входе в систему вы по-прежнему можете использовать метод аутентификации по умолчанию, но вы сможете войти в систему с паролем своей учетной записи через SSH. Если вы не отключите требование Windows Hello, у вас могут возникнуть проблемы со входом через SSH.
Попробуйте еще раз подключиться по SSH к машине Windows. Надеюсь, на этот раз процесс должен завершиться, и вы окажетесь в командной строке Windows, готовые делать все, что вам нужно, на этой машине.
Подпишитесь на канал TechRepublic How To Make Tech Work на YouTube, чтобы получать последние технические советы для профессионалов бизнеса от Джека Уоллена.
Информационный бюллетень Cybersecurity Insider
Укрепите защиту ИТ-безопасности своей организации, следя за последними новостями, решениями и рекомендациями в области кибербезопасности.
Доставка по вторникам и четвергам
Опубликовано: 18 ноября 2021 г., 11:54 по тихоокеанскому стандартному времени. Изменено: 18 ноября 2021 г., 7:38 по тихоокеанскому стандартному времени. Подробнее о безопасности
Читайте также: