Пролистывая задачи на фриланс биржах наткнулся на такой вопрос — просьба поставить на Windows Server 2012 R2 сервис для безопасного подключения через SSH, т. к. на другом конце — сотрудник имевший в свою очередь практическое знакомство только с Linux серверами и ему консоль ближе. Данная тема также интересна, помнится мне что ранее я уже разбирал как поставить возможность подключения к Windows 7 через ssh, сейчас же разберу и для текущей задачи.

Итак есть установленная система из оригинального образа Windows Server 2012 R2 (English), имеется одна учетная запись Administrator с паролем 712mbddr@, некоторые действия будут браться из ранее опубликованной.

На момент написания данной заметки версия Cygwin2.876, а версия пакета openssh: – 7.3p1-2

Далее запускаю терминал cygwin:

Win +X — Command Prompt (Admin) -

C:\Cygwin\Cygwin.bat

Administrator@srv-ad ~

$ и мигает курсор ожидающий ввода команд

Генерируем ключи доступа (публичный и приватный):

$ ssh-host-config -y

*** Query: Please enter the password: 712mbddr@

*** Query: Reenter: 712mbddr@

$

Теперь переключаюсь через сочетание клавиш Alt + Tab во все еще открытое окно командной строки Windows и настраиваю правила для брандмауэра:

C:\Windows\system32>sc config sshd start= auto

C:\Windows\system32>net start sshd

C:\Windows\system32>netsh advfirewall firewall add rule name="SSH Server" dir=in protocol=tcp localport=22 action=allow

Ok.

C:\Windows\system32>netstat -an | findstr :22

TCP 0.0.0.0:22 0.0.0.0:0 LISTENING

TCP [::]:22 [::]:0 LISTENING

Отлично.

Если же нужно повесить сервис SSH на другой порт, то за редактирование следует обратиться к конфигурационному файлу который находится если через Alt +Tab переключиться в bash консоль или вызвать bat файл запускающий ее: C:\Cygwin\Cygwin.bat

(На заметку: работа с консольным редактором vi по аналогии, как и в Ubuntu)

$ vi /etc/sshd_config

Port 22

MaxAuthTries 6

MaxSessions 3

PasswordAuthentication yes

После нажимаю: Esc → :wq!

На заметку: вообще это честно говоря пародия на bash консоль, т. к. не с первого раза отрабатывает переключение в режим редактирования, да и странным образом ведут себя другие команды. А потому советую перед боевым редактированием сперва сделать резервную копию редактируемого файла.

,либо же не переключаюсь в консоль Cygwin, вызвать текстовый редактор notepad и отредактировать конфиг:

C:\Windows\system32>notepad c:\Cygwin\etc\sshd_config

вот только все форматирование хромает, да и при сохранении не удается сохранить файл без расширения.

Все же лучше поставить простой редактор nano. Для этого запускаем скачанный файл: setup-x86_64.exe, далее все как обычно указываем сервер и пакет: nano

Устанавливаю пакет nano через Cygwin

$ nano /etc/sshd_config

Port 22

Protocol 2

MaxAuthTries 6

MaxSessions 3

PasswordAuthentication yes

После: Ctrl + O, Ctrl + X и все, чем проще тем лучше.

Теперь нужно перезапустить сервис sshd для активации изменений:

(Остановить сервис sshd)

$ cygrunsrv.exe -E sshd

(Запустить сервис sshd)

$ cygrunsrv.exe -S sshd

или по старинке:

$ net stop sshd

The CYGWIN sshd service is stopping.

The CYGWIN sshd service was stopped successfully.

$ net start sshd

The CYGWIN sshd service is starting.

The CYGWIN sshd service was started successfully.

И если было настроено правило в брандмауэре на 22 порт, то видоизменяем правило:

$ netsh advfirewall firewall show rule name=all | findstr "SSH"

Rule Name: SSH Server

$ netsh advfirewall firewall set rule name="SSH Server" new localport=22777

Updated 1 rule(s).

Ok.

Проверяем, что можно с Ubuntu 12.04.5 Desktop amd64 системы подключиться к Windows Server 2012 R2 через ssh:

aollo@system:~$ ssh -l Administrator 10.7.8.193 -p 22777

The authenticity of host ‘[10.7.8.193]:22777 ([10.7.8.193]:22777)’ can’t be established.

ECDSA key fingerprint is 42:4e:f6:93:5c:f4:39:bc:44:a7:68:e9:92:de:05:e7.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘[10.7.8.193]:22777’ (ECDSA) to the list of known hosts.

Administrator@10.7.8.193’s password:712mbddr@

Administrator@srv-ad ~

$

$ net stop Themes

The Themes service is stopping.

The Themes service was stopped successfully.

Итого подключение успешно прошло, а если нужно поставить какое либо ПО (пакет lynx) без необходимости запускать инсталлятор (GUI оболочку) то сделать это можно так:

$ cd c:/Users/Administrator/Downloads/

$ cygcheck.exe -p 'lynx' | grep lynx

Found 12 matches for lynx

lynx-debuginfo-2.8.7-2 – lynx-debuginfo: Debug info for lynx (installed binaries and support files)

lynx-2.8.7-2 – lynx: A text-based Web Browser (installed binaries and support files)

lynx-2.8.7-2-src – lynx: A text-based Web Browser (source code)

$ ./setup-x86_64.exe --root c:/Cygwin --no-desktop --no-shortcuts --no-startmenu --quiet-mode -q -P lynx

Starting cygwin install, version 2.876

User has backup/restore rights

Current Directory: c:/Cygwin

Could not open service McShield for query, start and stop. McAfee may not be installed, or we don’t have access.

root: c:\Cygwin system

Selected local directory: c:/Cygwin

net: Direct

site: http://cygwin.mirror.constant.com/

Downloaded c:/Cygwin/http%3a%2f%2fcygwin.mirror.constant.com%2f/x86_64/release/lynx/lynx-2.8.7-2.tar.bz2

Extracting from file://c:/Cygwin/http%3a%2f%2fcygwin.mirror.constant.com%2f/x86_64/release/lynx/lynx-2.8.7-2.tar.bz2

Changing gid back to original

running: c:\Cygwin\bin\dash.exe “/etc/postinstall/0p_000_autorebase.dash”

running: c:\Cygwin\bin\dash.exe “/etc/postinstall/0p_update-info-dir.dash”

running: c:\Cygwin\bin\bash.exe –norc –noprofile “/etc/postinstall/lynx.sh”

Changing gid to Administrators

Ending cygwin install

На заметку: также можно ставить несколько пакетов просто перечисляя их после ключа: -P tar,wget,lynx,unrar

Что еще, вроде как есть специальный пакет на подобии утилиты apt-get как в Ubuntu и с его помощью можно устанавливать пакеты привычным мне способом:

$ wget raw.github.com/transcode-open/apt-cyg/master/apt-cyg

$ chmod +x apt-cyg

$ mv apt-cyg c:/Cygwin/bin/

$ apt-cyg install curl

Installing curl

–2016-09-19 11:45:49– http://cygwin.mirror.constant.com//x86_64/release/curl/curl-7.50.3-1.tar.xz

Resolving cygwin.mirror.constant.com (cygwin.mirror.constant.com)… 108.61.5.83

Connecting to cygwin.mirror.constant.com (cygwin.mirror.constant.com)|108.61.5.83|:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: 289508 (283K) [application/octet-stream]

Saving to: ‘curl-7.50.3-1.tar.xz’

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

Ладно что-то я отклонился от темы данной заметки, но все равно любой представленный материал у меня на блоге полезен. Так хоть и не совсем тривиальной был разбор как же все-таки установить openssh сервер на Windows Server 2012 R2 с упором на командную строку, с GUI же конечно же было бы проще, но нужно всегда заходить к решению проблемы с того, чего может не оказаться под рукой. А с помощью этой заметки я показал, как все же сделать. Итого, заметка функциональна и практична, на этом я прощаюсь, с уважением автор блога — ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru