Подключение к Windows по SSH с помощью встроенного OpenSSH
Начиная с Windows 10 1809 и Windows Server 2019 в операционной системе имеется встроенный SSH сервер, основанный на OpenSSH. В этой статье мы покажем, как установить и настроить OpenSSH сервер в Windows 10 и подключиться к нему удаленно по защищенному SSH протоколу (ну прям как в Linux 🙂 ).
Установка сервера OpenSSH в Windows
Рассмотрим, как установить компонент OpenSSH Server в Windows 10 1903 (Windows Server 2019 все выполняется аналогично).
Пакет OpenSSH (как и RSAT) уже включен в данные версии Windows в виде Feature on Demand (FoD).
При наличии прямого Интернет-подключения вы можете установить сервер OpenSSH с помощью PowerShell
Add-WindowsCapability -Online -Name OpenSSH.Server*
Или при помощи DISM:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server
В Windows 10 этот компонент также можно установить через панель Параметры (Приложения -> Управление дополнительными компонентами -> Добавить компонент). Найдите в списке Open SSH Server и нажмите кнопку Install).
Чтобы проверить, что OpenSSH сервер установлен, выполните:
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH.Ser*’
Настройка SSH сервера в Windows
После уставной сервера OpenSSH в Windows вам нужно изменить тип запуска службы sshd на автоматический и запустить службу с помощью PowerShell:
Set-Service -Name sshd -StartupType ‘Automatic’
Start-Service sshd
С помощью nestat убедитесь, что теперь в системе запущен SSH сервер и ждет подключений на 22 порту:
netstat -na| find «:22»
Проверьте, что включено правило брандмауэра (Windows Defender Firewall), разрешающее входящие подключения к Windows по порту TCP/22.
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled
Если правило отключено (состоянии Enabled=False) или отсутствует, вы можете создать новое входящее правило командой New-NetFirewallRule:
New-NetFirewallRule -Name sshd -DisplayName ‘OpenSSH Server (sshd)’ -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
По умолчанию важным компоненты OpenSSH хранятся в следующих каталогах:
- Исполняемые файлы OpenSSH Server: C:\Windows\System32\OpenSSH\
- Конфигурационный файл sshd_config (создается после первого запуска службы): C:\ProgramData\ssh
- Журнал OpenSSH: C:\windows\system32\OpenSSH\logs\sshd.log
- Файл authorized_keys и ключи: %USERPROFILE%\.ssh\
При установке OpenSSH сервера в системе создается новый локальный пользователь sshd.
Sshd_config: Конфигурационный файл сервера OpenSSH
Вы можете изменить настройки сервере OpenSSH в конфигурационном файле %programdata%\ssh\sshd_config.
Например, чтобы запретить SSH подключение для определенного доменного пользователя (и всех пользователей указанного домена), добавьте в конце файле директивы:
Чтобы разрешить подключение только для определенной доменной группы:
Либо можете разрешить доступ для локальной группы:
Можно запретить вход под учетными записями с правами администратора, в этом случае для выполнения привилегированных действий в SSH сессии нужно делать runas.
Следующие директивы разрешают SSH доступ по ключам (доступ к Windows через SSH по ключам рассмотрим подробно в следующей статье) и по паролю:
Вы можете изменить порт, на котором принимает подключения OpenSSH в конфигурационном файле sshd_config в директиве Port.
Подключение к Windows 10 через SSH
Теперь вы можете попробовать подключиться к своей Windows 10 через SSH клиент (я использую putty, но можно пользоваться встроенным ssh клиентом Windows).
При первом подключении появится стандартный запрос на добавление узла в список известных SSH хостов.
Нажимаем Да, и в открывшееся окне авторизуемся под пользователем Windows.
При успешном подключении запускается командная оболочка cmd.exe со строкой-приглашением.
В командной строке вы можете выполнять различные команды, запускать скрипты и программы.
Я предпочитаю работать в командной строке PowerShell. Чтобы запустить интерпретатор PowerShell, выполните:
Чтобы изменить Shell по умолчанию в OpenSSH с cmd.exe на PowerShell, внесите изменение в реестр такой командой:
New-ItemProperty -Path «HKLM:\SOFTWARE\OpenSSH» -Name DefaultShell -Value «C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe» -PropertyType String –Force
Осталось перезапустить SSH подключение и убедиться, что при подключении используется командный интерпретатор PowerShell (об этом свидетельствует приглашение PS C:\Users\admin> ).
В SSH сессии запустилась консоль PowerShell, в которой работают привычные функции: авто дополнение, раскраска модулем PSReadLine, история команд и т.д. Если текущий пользователь входит в группу локальных администраторов, то все команды в его сессии выполняются с повышенными правами даже при включенном UAC.
Установка OpenSSH Server в Windows
Если вам понадобился SFTP/SSH сервер на Windows Server 2012 R2, то вы попали по адресу. Установим, запустим, настроим и протестируем OpenSSH Server в Windows Server 2012 R2.
Установка OpenSSH в Windows Server 2012 R2
Скачиваем последнюю версию дистрибутива OpenSSH:
Сейчас доступна версия v8.0.0.0p1-Beta. Скачиваю OpenSSH-Win64.zip .
Создаю директорию C:\Program Files\OpenSSH , распаковываю в неё содержимое архива.
Запускаю powershell от имени администратора.
Выполняю скрипт установки:
Если произошла ошибка политики безопасности, то можно выполнить установку так:
powershell -ExecutionPolicy Bypass -File .\install-sshd.ps1
В результате вижу ошибку:
Исправляется легко, захожу в папку C:\ProgramData и создаю вручную директорию «ssh».
Снова пытаюсь сгенерировать ключи:
На этот раз процедура выполняется успешно.
Настраиваю владельца файлов и права доступа:
PowerShell -ExecutionPolicy Bypass -File .\FixHostFilePermissions.ps1
На каждый вопрос отвечаю «A».
Открыть 22 порт
OpenSSH работает по порту TCP 22. Открою доступ в Firewall:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
То же самое можно сделать через GUI в оснастке Windows Firewall with Advanced Security .
Запуск службы OpenSSH
Открываю список служб:
Нахожу службу «OpenSSH SSH Server». В свойствах службы делаю автоматический запуск и запускаю её.
Проверим что 22 порт работает:
Проверка OpenSSH
Проверю с помощью WinSCP. Для доменного пользователя используется логин вида domain\username .
При первом входе появится окно:
Настройка доступа
Конфигурационный файл находится здесь: C:\ProgramData\ssh\sshd_config .
Собственно, OpenSSH конфигурируется здесь. Например, чтобы разрешить доступ по OpenSSH определённой группе пользователей, допишу в конец файла:
DenyUsers *
AllowGroups my_domain\my_group_for_ssh_access
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.
Как получить доступ к Windows 7 через SSH-консоль при помощи Cygwin
OSmaster.org.ua > Windows > Seven > Как получить доступ к Windows 7 через SSH-консоль при помощи Cygwin
Если вы себя комфортно чувствуете при работе с Linux/Unix и хотели бы получить SSH-доступ к вашей машине на Windows 7, то такое приложение, как Cygwin сможет вам обеспечить такую возможность и предоставить знакомую среду для работы. При этом необходимо проделать всего несколько простых настроек.
Установка OpenSSH.
Для работы по SSH нам необходимо установить OpenSSH. Для этого, скачайте файл setup.exe, который доступен для скачивания в конце этой статьи и запустите его.
В появившемся диалоге установки можете выбирать все параметры по умолчанию, но до следующего момента. В окне выбора пакетов для установки необходимо набрать в окне поиска (Search) слово «open» и открыть список пакетов в категории «Net», нажав на плюс напротив этой категории.
Далее вам необходимо найти строчку с именем пакета «openssh». После чего кликните по надписи в столбике «New» напротив этого пакета пока не увидите появившейся крестик в ячейке в столбике под именем «Bin». Как это показано на предыдущем рисунке. Потом жмем «Next» и дожидаемся пока установщик скачает и установит нужные пакеты.
Конфигурация OpenSSH in Cygwin.
В отличии от Linux дистрибутивов, OpenSSH в Windows 7 не сможет настроить сам себя автоматически для работы. Необходимо выполнить несколько простых шагов. Для начала, кликните правой кнопкой по ярлыку Cygwin и запустите его от имени администратора (Run as administrator):
Так мы убедимся, что имеем все права для корректной настройки. Вы увидите пустое окно Cygwin.
Далее введите следующую команду:
Вы увидите как скрипт сгенерирует некоторые файлы по умолчанию, а затем выдаст вам вопрос на подтверждение разделения доступа по правам или привилегиям (Privilege Separation). Эта настройка присутствует в стандартной установке OpenSSH и в других системах, поэтому наберите слово «yes» напротив вопроса.
Далее вам будет предложено создать новый аккаунт (учетную запись для SSH) с особыми привилегиями (правами). Поэтому наберите «yes» и скрипт продолжит работу.
Далее вас спросят, хотите ли вы запускать sshd (процесс для приема SSH-соединений) как службу. Это позволит вам получить SSH-доступ независимо от того запущен ли в данный момент Cygwin. Необходимо набрать слово «yes» напротив вопроса для продолжения.
Далее вас попросят ввести значение для даемона. Наберите следующее:
Вы увидите, что скрипт выдаст вам некоторую информацию об вашей системе, после чего попросит вас создать привилегированный аккаунт с именем пользователя по умолчанию «cyg_server». Аккаунт с этим именем пользователя работает нормально, но если вы хотите изменить имя вашей привилегированной записи на другое, то ответьте «no» и введите тот логин, который вам подходит.
Конечно же, необходимо ввести пароль для этого аккаунта.
Cygwin отобразит введенный вами пароль для вашей учетной записи в тексте командной строки, поэтому необходимо убедиться, что вы в безопасном месте и никто его не увидит. Вы увидите некоторую дополнительную информацию и, если все прошло нормально, то получите сообщение о том, что настройка успешно завершена.
Вы можете перезагрузиться или ввести следующую команду для запуска службы sshd:
Теперь можно набрать «exit» для выхода с интерфейса Cygwin.
Конфигурация пользователя в SSH.
Теперь необходимо создать соответственно SSH-ключи для вашего привилегированного аккаунта. Просто запустите Cygwin и введите в консоль следующую команду:
Вас попросят создать специфические ключи для вашего аккаунта. Поэтому советую сделать так: на первый вопрос ответьте «no», а на второй — «yes».
Почему именно так? Потому что SSH2 более безопасен, поэтому рекомендую его использовать для хранения ключей. После ввода пароля, вас спросят не хотели бы вы использовать эту идентификацию для доступа к этой машине. Наберите «yes».
Далее скрипт спросит нужно ли создать SSH2 DSA ID файл. Это необходимо, если вы хотите получать доступ не по паролю, а по этому файлу-ключу. Советую ответить «no».
Вот и все. Все уже настроено и если вы хотите проверить вашу конфигурацию, то введите следующую команду в консоль Cygwin:
Ключ –v включит режим «verbose», который покажет вам все детали процесса. Затем, когда вас спросит продолжать ли соединение, то наберите «yes», а после того введите пароль в консольную строку. Если вы изменили имя пользователя по умолчанию, то необходимо будет ввести и его.
Если все прошло удачно, то вы увидите стандартную bash-строку.
Возможные проблемы.
Если в процессе настройки возникают некоторые ошибки, то убедитесь что вы запустили консоль Cygwin от имени администратора или вы работаете в учетной записи с правами администратора.
Если в процессе подключения к вашей Windows 7 с другого компьютера вы получили сообщение об ошибке, то убедитесь что фаерволл (firewall) на этих машинах не блокирует 22 порт (23 порт если вы используете SFTP).
Скачать установщик Cygwin можно по следующей ссылке:
Также рекомендую прочитать:
23 Комментариев
$ ssh-host-config
-bash: ssh-host-config: команда не найдена
$
как понять? помогите пожалуйста
$ cd/
-bash: cd/: No such file or directory
Все ли пакеты установлены?
Скажите, при настройка пользователя,созданного Cygwin, я должен Cygwin запустить от имени этого пользователя, либо все можно сделать под администратором?
В вашем примере все операции выполнялись от имени пользователя Yatri, хотя для ssh сервера был создан другой пользователь?
Нет. Сама служба стартует сразу при загрузке системы от имени созданного ей привилегированного пользователя. Вход по SSH осуществляется от имени пользователя «cyg_server», или другого, введенного вами на этом этапе установки и по паролю, который вводился вами после имени пользователя.
Настройка командой ssh-host-config заканчивается ошибкой
win 32 error 1057
Ошибки быть не должно. Просто недавно проработал установку ssh-сервера на Cygwin. Проверите установлены ли все пакеты. Их должно быть 2, как показано на втором рисунке: openssh и openssl.
Спасибо. Теперь всё получилось.
помогите. не вводится пароль… что делать.
Не вводиться пароль, или не пускает при попытке войти по ssh?
Добрый день.
Как и у Павла, возникает аналогичная проблема — установка sshd заканчивается
/usr/bin/cygrunsrv: Error installing a service: CreateService: Win32 error 1057:
уже неоднократно проверял какие пакеты скачивать. Переустанавливал. Не помогло.
Просьба помочь и указать возможные ошибки.
На каком именно этапе выскакивает эта ошибка? Точно запускаете установку с правами администратора?
Помогите можно ли через эту программу зайти в модем. Или подскажите какие программы можно работать по протоколу SSH и только для вин7 , а то я в люнке не шпарю .. помогите
А модем находится или подключен к компьютеру с какой именно операционной системой и откуда к нему нужно подключаться?
В чем может быть проблема?
В консоли Cygwin выполняю *bat перезапуска программы
( TASKKILL /F /IM программа.exe /T
start c:\diskD\ExecAs\программа.lnk ), все работает.
А через ssh, программа убивается, вроде даже запускается, но через пару секунд вылетает.
Затрудняюсь ответить, есть только догадка, возможно есть проблема с правами пользователя от имени которого запускается Cygwin на Windows.
/usr/bin/cygrunsrv: Error installing a service: CreateService: Win32 error 1057 не работает
На каком именно этапе вылезает эта ошибка?
Делал все по инструкции, но при попытке подключения не находит id_rsa, хотя сам файл создается и лежит в папке .ssh
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
Connection closed by ::1
Генерации ключей для ssh-host-config и ssh-user-config прошли успешно? Тест сам на себя выполняется успешно (ssh –v localhost)? В терминале линукс такую команду используете: ssh -i id_rsa -l user serverIP?
При доступе через консоль с Ubuntu на Win7 — тишина а потом разрыв соединения из-за лимита ожидания.
С Win7 на Ubuntu захожу без проблем…
В чем трабла?!
Служба sshd работает? Команда ssh –v localhost проходит?
у меня была аналогичная проблема при установке крона, при этом крон для кигвин я уже не раз настраивал на других машинах, по этой причине тут и оказался, если вы прочитаете что написано после Win32 error 1057:
там будут кракозябры, переведя из кои8 в вин1251 вы сможете прочитать «Имя учетной записи задано неверно или не существует, или же неверен указанный …»
и тут меня осенило, я перенес кигвин простым копированием,
соответственно надо проверить чтобы в файле /etc/passwd
были корректные данные о пользователе и хосте.
Оставить комментарий Отменить ответ
- Как удалить все стандартные сторонние приложения из Windows 8 (Windows RT)
(10,00 из 10)
- Как предоставить CD/DVD привод в общий доступ в Windows
(10,00 из 10)
- Как уменьшить уровень почти полной разрядки батареи до 1% в настройках Windows 7
(10,00 из 10)
- Список новых функций в Windows 8.1
(10,00 из 10)
- Удобный плагин для навигации по файлам и папкам в Notepad++
(10,00 из 10)
- Сравнение программ для восстановления информации
(10,00 из 10)
- Как включить кнопку Mute для вкладок в Google Chrome
(10,00 из 10)
- Простой бэкап настроек ваших беспроводных сетей в Windows 7
(10,00 из 10)
- Создание ярлыка и горячих клавиш для отключения монитора
(10,00 из 10)
- Кросс-платформенный аудио редактор Ocenaudio
(10,00 из 10)

































