Недавно я уже писал о том, как поднять 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@<сервер>
Если все настроенно правильно, то будет выведено приглашение на подключение и ввода пароля.