Установка SSH-демона на Windows

Недавно я уже писал о том, как поднять SSH-туннелирование между двумя компьютерами, один из которых работает на Windows (клиент), другой - на Debian (сервер).

Теперь возникла задача создать туннель между компьютерами с установленной ОС Windows. Эта задача чуть сложнее, т.к. в Windows нет встроенного SSH-сервера, чтобы принимать подключения от клиента. Таким образом на компьютер-сервер, который, кстати, у меня работает под управлением Windows Server 2012 Standart, пришлось поднимать SSH-демон. Для решения этой задачи, как и ранее, я использовал Cygwin. Для работы с SSH нужно установить два дополнительных пакета - openssh и openssl.

Далее идет инструкция, как поднять SSH-демон на Windows:

1. Необходимо отредактировать файл Cygwin.bat, добавив в него следующую строку:

set CYGWIN=binmode ntsec

Таким образом батник должен иметь следующий вид:

@echo off

C:
chdir C:\cygwin\bin
set CYGWIN=binmode ntsec
bash --login -i

2. Теперь необходимо убедиться, что Cygwin (cygrunsrv) установлен должным образом. Для этого нужно запустить Cygwin.bat и в открывшемся окне консоли ввести команду:

cygrunsrv -h

Если будет показана справка, то все установленно корректно и можно продолжать дальше. В противном случае нужно будет переустановить Cygwin.

3. Для установки SSH-демона (демон в Windows принято называть службой) нужно выполнить следующую команду:

ssh-host-config

На появляющиеся вопросы следует отвечать следующим образом:

*** Query: Should privilege separation be used? <yes/no>: yes
*** Query: New local account 'sshd'? <yes/no>: yes
*** Query: Do you want to install sshd as a service?
*** Query: <Say "no" if it is already installed as a service> <yes/no>: yes
*** Query: Enter the value of CYGWIN for the deamon: [] binmode ntsec
*** Query: Do you want to use a different name? <yes/no>: yes
*** Query: Enter the new user name: root
*** Query: Reenter: root
*** Query: Create new privileged user account 'root'? <yes/no>: yes
*** Query: Please enter the password:
*** Query: Reenter:

Если конфигурация прошла успешно, то должно быть выведено следующее сообщение:

Host configuration finished. Have fun!

4. Далее нужно выполнить команды:

/bin/mkpasswd -l –u root >> /etc/passwd
mkdir -p /home/root (for example, mkdir -p /home/pjohn)
chown <USER> /home/root

5. В файле C:\cygwin\etc\passwd нужно удалить подобную строку (если есть), которая запрещает пользователю root использовать интерпретатор bash:

root:unused:1005:513:Privileged server,WIN-PC\root,S-1-5-21-38344676178-3524706203-1997156839-1005:/var/empty:/bin/bash/false

6. Выполните следующую команду для запуска SSH-демона (службу можно запустить также из оснастки "Services"):

cygrunsrv -S sshd

7. Убедитесь, что 22 порт открыт для прослушивания (в этом поможет команда netstat -na). Если нет, то необходимо создать соответствующее правило в Windows Firewall.

Теперь можно проверить подключение с клиента:

ssh root@<сервер>

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