OpenSSH для Windows |
![]() |
Добавил(а) microsin |
Технология SSH (Secure Shell) позволяет защитить простые протоколы ftp, telnet, создавать защищенные туннели, перенаправление сетевых портов, что существенно расширяет набор инструментов системного администратора. OpenSSH (открытый безопасный shell) — набор программ, предоставляющих шифрование сеансов связи по компьютерным сетям с использованием протокола SSH. Он был создан под руководством Тэо де Раадта как открытая альтернатива проприетарного ПО от SSH Communications Security. Далее рассмотрена установка сервера и клиента OpenSSH на платформе Windows XP. 1. Скачайте пакет сервера, это будет файл наподобие setupssh381-20040709.zip, распакуйте. Скачать можно по ссылке [1]. 2. Устанавите и подтвердите умолчания во всех настройках. Установятся сервер и клиент SSH в нужное место (папка %ProgramFiles%\OpenSSH). После установки появится окно с предупреждением "Перед запуском службы OpenSSH Вы ДОЛЖНЫ отредактировать файл %ProgramFiles%\OpenSSH\etc\passwd. Если вы не сделаете этого, то не сможете залогиниться через сервер SSH. Пожалуйста, прочитайте информацию в файлах readme.txt или quickstart.txt для правильной настройки файла passwd.". 3. Выполните все указания из файла quickstart.txt. Запустите cmd в папке %ProgramFiles%\OpenSSH, перейдите в папку bin (Start -> Run... -> cmd -> cd %ProgramFiles%\OpenSSH -> cd bin). 4. Теперь нужно сделать group permissions file (файл разрешений для группы). Он может быть создан для локальных или доменных групп, для чего применяется команда mkgroup с ключом -l и -d соответственно. У меня был домашний комп, и никакого домена не было, поэтому я ввел просто: mkgroup -l >> ..\etc\group После этого в папке etc появится файл group. 5. Теперь нужно в passwd file (файл паролей) добавить пользователей - либо локальных, либо доменных, для чего применяется команда mkpasswd с ключом -l и -d соответственно. Я ввел mkpasswd -l -u Administrator >> ..\etc\passwd Можно не указывать ключ -u и пользователя, тогда добавятся все пользователи, включая сервисные аккаунты и аккаунт Guest. Я ограничился пользователем Administrator. После этого в папке etc появится файл passwd. 6. Запустите сервер OpenSSH командой net start opensshd, или с помощью консоли управления сервисами запустите сервис по имени "OpenSSH Server". После этого приложением sshd.exe должен открыться TCP порт 22. На этом шаге у меня была проблема - сервис не хотел запускаться в системной ошибкой "System error 1067". Попробовал найти лог, он оказался в файле %ProgramFiles%\OpenSSH\var\log\OpenSSHd.log. Там было такое сообщение: По-русски эта галиматься значит, что не подходит версия файла cygwin1.dll. Попытался найти файл cygwin1.dll, он у меня оказался в нескольких местах: c:\Program Files\hypertunnelNT\cygwin1.dll Самая свежая версия (1005.23.0.0) была у файла c:\WinAVR\bin\cygwin1.dll, а текущая версия файла D:\Program Files\OpenSSH\bin\cygwin1.dll была 1005.10.0.0. Попробовал для OpenSSH подменить cygwin1.dll на более новый, от WinAVR - и все заработало! 7. События успешного и неуспешного подключения клиентов пишутся в лог Application системы Windows. Записью в лог управляют ключи SyslogFacility и LogLevel в файле etc\sshd_config. Я у себя настроил эти опции так: SyslogFacility AUTH Поскольку хакерская активность в Интернете высока, журнал Application будет быстро заполняться, поэтому есть смысл увеличить размер лога Application (я увеличил до 5120 байт) и включить перезаписывание записей журнала по необходимости (Overwrite events as needed). Теперь с сервером OpenSSH на Windows мы получаем следующие возможности: - можно добраться до командной строки cmd, законнектившись под пользователем, прописанным в passwd (в моем примере Administrator). Текущий путь получаем, как прописано в переменной окружения %USERPROFILE% Windows. Под FreeBSD для этого можно воспользоваться клиентом ssh: $ ssh Administrator@IP_или_имя_нашего_сервера_OpenSSH - можно в Midnight Commander открыть с панели Shell Link, правда пользы от этого пока мало - у меня при подключении открылась папка bin в совсем неожиданном месте - c:\WinAVR\utils\bin\, и были доступны файлы только внутри неё. - можно воспользоваться защищенным ftp-соединением (Secure FTP, или SFTP). Под FreeBSD для этого можно воспользоваться клиентом sftp: $ sftp Administrator@IP_или_имя_нашего_сервера_OpenSSH Как и в случае с cmd через утилиту ssh, текущий путь будет %USERPROFILE%, и будут доступны все файлы в текущей директории и в её подпапках. Можно подняться на уровень выше, в папку %SystemDrive%\Documents and Settings\. Если попытаться подняться еще на уровень выше, то попадем не как ожидалось на диск %SystemDrive%, а в папку %ProgramFiles%\OpenSSH. Эта папка считается корневой, и больше никуда выше попасть нельзя. Чтобы попасть обратно в папку %USERPROFILE%, нужно ввести cd /home/Administrator. - можно воспользоваться утилитой защищенного копирования scp. Например, под FreeBSD это будет выглядеть так: $ scp backstore/080106archive.tar Administrator@IP_или_имя_нашего_сервера_OpenSSH:. Это означает - скопировать файл backstore/080106archive.tar в текущий каталог (.) пользователя Administrator (напомню, что это будет папка %USERPROFILE%). - туннелирование сетевых соединений, иногда это называют "перенаправление портов через SSH-туннель". [Беспарольная аутентификация, основаная на public/private ключах] Как и в примерах с ssh, sftp, утилита scp запросит пароль пользователя Administrator. Чтобы не вводить пароль, например для копирования из bat-файла, нужно сгенерировать ключи и далее их использовать. Процесс по шагам (предполагается, что сервер установлен на Windows XP SP2, там есть пользователь Administrator, а клиент используется на FreeBSD, версия ядра 6.2-RELEASE-p8, там работаем под пользователем user, имя машины host.agava.net). 1. Сгенерируйте ключи на клиенте (DSA, Digital Signature Algorithm): $ cd ~ # переходим в домашний каталог пользователя user Вместо hh будут HEX-цифры хеша ключа. Для генерации ключей требуется некоторое время (в зависимости от мощности машины, у меня на это ушло около 20 секунд). После этой операции в директории .ssh появятся 2 файла - id_dsa (приватный, секретный ключ, используется для расшифровки данных) и id_dsa.pub (публичный ключ, используется для шифрования данных). 2. Скопируйте файл id_dsa.pub с клиента на сервер, в папку пользователя Administrator, в подпапку .ssh (у меня был полный путь такой - d:\Documents and Settings\Administrator\.ssh\). Переименуйте id_dsa.pub в authorized_keys. Иногда может потребоваться использовать другое имя - authorized_keys2, за деталями обращайтесь к информации в файле %ProgramFiles%\OpenSSH\docs\key_authentication.txt. 3. Откройте в текстовом редакторе файл %ProgramFiles%\OpenSSH\sshd_config, поменяйте параметр StrictModes yes на StrictModes no (см. тот же файл key_authentication.txt, ключевое слово Fix StrictModes). 4. Перезапустите сервер SSH: net stop opensshd Попробуйте на клиенте команды scp, sftp, ssh (см. примеры выше) - под пользователем Administrator больше пароль не запрашивается! B кaчecтвe yдoбнoгo (и бecплaтнoгo!) SSH-клиeнтa мoжнo иcпoльзoвaть putty. Eгo тoжe мoжнo иcпoльзoвaть для бeзпapoльнoй ayтeнтификaции пpи кoннeктe к SSH-серверу. Как нacтpoить, пpoцecc пo шaгaм (пpeдпoлaгaeтcя, чтo клиeнт putty paбoтaeт нa Windows XP, a сервер SSH - нa FreeBSD, вepcия ядpa 6.2-RELEASE-p8, тaм paбoтaeм пoд пoльзoвaтeлeм user, имя мaшины host.agava.net): 1. Сгенерируйте ключи нa клиeнтe (DSA, Digital Signature Algorithm), для чeгo зaпycтите пpoгpaммy puttygen.exe. Oнa идeт в пoлнoм кoмплeктe putty, и ecли y Bac пoчeмy-тo eё нeт, тo мoжнo cкaчaть на сайте [3], либо скомпилировать из исходников. После запуска puttygen.exe выберите тип ключа (я выбрал SSH-2 DSA, хотя создатели putty настоятельно рекомендуют выбирать не DSA, а RSA), разрядность ключа (я оставил по умолчанию 1024), нажмите кнопку Generate. Поелозьте мышкой по экрану - в этом процессе генерируется случайное число для ключа. Ключ сгенерируется. В поля "Key passphrase:" и "Confirm passphrase:" принципиально ничего не вводите, поскольку нам нужно от пароля избавиться. Нажмите Save public key, сохраните публичный ключ, нажмите Save private key, сохраните секретный ключ. Ключи лучше сохранить в потайное место (особенно секретный ключ), чтобы не достали враги =). 2. Теперь надо перетащить сгенерированный публичный ключ на сервер SSH. В программе puttygen.exe из окна "Public key for pasting into OpenSSH authorized keys file:" копируйте весь текст, создайте новый файл authorized_keys и этот текст вставьте туда, файл сохраните на сервер SSH, в папку .ssh (эта папка должна находиться в корне домашнего каталога пользователя user на FreeBSD). Программу puttygen.exe закройте, запустите putty.exe. 3. Настройте сессию. Все как обычно - нажмите правой кнопкой на верхней плашке окна putty, выберите "New session...", с категории Session укажите IP или имя сервера FreeBSD, протокол SSH, в окне ввода "Saved Sessions" укажите произвольное имя сессии. Перейдите в категорию Connection\Data, укажите в окне ввода "Auto-login username" имя пользователя, под которым будете логиниться. Перейдите в категорию Connection\SSH\Auth, укажите секретный ключ для аутентификации - рядом с окном "Private key file for authentication:" нажмите кнопку "Browse..." и выберите файл секретного ключа, который был сгенерирован и записан на шаге 1. Снова перейдите в категорию Session, нажмите кнопку Save. Готово! Теперь можно нажать кнопку Open, запустится сессия, и пароль вводить уже не надо. [Ссылки] 1. OpenSSH site:sourceforge.net. |