Cygwin ssh server windows как служба

Обновлено: 06.07.2024

Я поклонник Linux, но из-за плохих беспроводных драйверов Intel в Linux мне пришлось переключиться на Windows 7. Я установил Cygwin в Windows и хочу настроить SSH для удаленного подключения к моему ноутбуку.

Я искал с Google и нашел информация для установки сервера openssh на Win 7, но я получаю следующую ошибку при запуске ssh-host-config :

разрешения этой папки отображаются только для чтения (применяется только к этой папке), зарегистрировался в сером. Я попытался снять флажок, но после того, как я снова открою свойства, флажок снова установлен. Есть ли способ изменить разрешения этой папки?

Я запускаю cygwin 1.7 в Windows 7 x64 и sshd. Я не помню, как получил эту ошибку при запуске sshd_config, но я просто посмотрел на мой каталог /var/run, и он установлен в 777.

попробуйте это в оболочке cygwin chmod 777 /var/run

извините за такую старую тему, но этот вопрос всегда возникал, когда я гуглил эту конкретную проблему.

через несколько месяцев, я, наконец, нашел решение. Когда я настраивал cygwin, у меня не было правильно созданных учетных записей пользователей и групп в cygwin. Основной способ сделать это-запустить:

Если вы входите в систему с помощью пользователя домена и passwd, вы можете сделать:

или, если у вас есть невероятно большая сеть, как моя, вы не можете очень хочу. Альтернативой является только пользователь ваших локальных пользователей и группы плюс любой, который вы вошли в систему как:

после того, как я сделал это, я, наконец, смог правильно запустить ssh-host-config для создания службы.

У меня было много проблем с этим. Я обнаружил, что шаги установки по умолчанию работают просто отлично при условии, что я:

  1. запустите оболочку Cygwin как административный пользователь с параметром "Запуск от имени администратора".
  2. отключите UAC.
  3. отключена защита от вирусов в режиме реального времени.

после того, как эти шаги были предприняты, шаги установки по умолчанию:

  1. установить "openssh" из Cygwin установщик.
  2. запустите оболочку Cygwin как административный пользователь с параметром "Запуск от имени администратора".
  3. запустите "ssh-host-config" из оболочки Cygwin.
  4. Разделение привилегий: да
  5. новая локальная учетная запись "sshd": да
  6. установить sshd как сервис: да
  7. CYGWIN значение: ntsec tty
  8. другое имя для "cyg_server": нет
  9. создать новую привилегированную учетную запись пользователя "cyg_server": yes
  10. установить "cyg_server" пароль и хранить в безопасном месте
  11. net start sshd

после этого все, кажется, работает нормально как на Windows 7 Professional, так и дома.

Если у вас уже есть неудачная установка Cygwin sshd, возможно, лучше всего сделать полную деинсталляцию и начать заново.

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

затем создайте passwd & group, как указано выше:

затем я побежал:

в оболочке cygwin убедитесь, что вы являетесь администратором:

в Проводнике Windows, для папку /var :

свойства.
Безопасность.
Добавить администраторов групп с полным контролем для папка и вложенные папки.

это работает для меня.

Я смог успешно запустить сценарий ssh-host-config только тогда, когда я установил Cygwin на жесткий диск типа NTFS. Сценарий ssh-host-config не работал, когда я установил Cygwin на флэш-накопитель типа exFAT.

у меня была та же проблема. Моя проблема, я считаю, заключалась в том, что у меня был пользовательский файл /etc/fstab, где я монтировал корневую папку с опцией "noacl". Вот как я решил проблему:

переместить пользовательский /etc / fstab в сторону:

кроме того, вы можете отредактировать файл /etc/fstab и удалить параметр noacl.

закройте все окна Cygwin bash и любые другие процессы или службы Cygwin. Если вы если какой-либо процесс Cygwin запущен, он будет поддерживать старые настройки /etc/fstab.

запустите новое окно Cygwin bash.

возможно, Вам потребуется выполнить следующее.

скрестите пальцы, запустите ssh-host-config, и теперь он должен завершиться без ошибок.

если вы переместили /etc / fstab на Шаге 1, Вы можете переместить его обратно теперь:

если вы создали новых пользователей после первой установки Cygwin, update/etc / passwd, в противном случае эти пользователи не смогут войти через ssh:

кроме того, перейдите в Брандмауэр Windows и разрешите C:/cygwin/usr/sbin/sshd - . exe и C:/cygwin/usr/sbin/sftp-server - . exe

enter image description here

для пользователей windows запустите"Cygwin Terminal" щелкнув правой кнопкой мыши на ярлык и запустить его администратор.

Теперь Запустите "ssh-host-config " С терминала Cygwin . это определенно сработает.

В данном случае это заметка, как напоминалка для следующих заметок испо льзования особого инструмента целью которого является портирование утилит Linux систем на Windows в основе которых лежит динамическая библиотека без которой не было бы возможности запускать их. Пакет Cygwin обобщает различные инструменты разработки, прикладного обеспечения и их эквивалентные аналоги базовых программ. Если по простому, то привычные программы из Linux можно запускать в Windows получая в замен ту легкость и простоту создаваемых скриптов, а также совмещение использования консольных команд Windows редакций. Т.е. выигрыш на лицо, два в одном. Ниже я покажу, да и себе заметка на будущее,

  • Как установить в систему Windows пакет Cygwin
  • Как установить OpenSSH пакет
  • Как настроить аутентификацию по ключу против по паролю

если используется архитектура x 86, то ссылка на скачиваемый пакет:

На заметку: для установки в системе должны быть права Администратора, и у меня UAC Отключён.

В конечном этоге в этой заметке рассматривается как для двух систем установить и настроить безпарольный доступ друг к другу по ключам.

W7X86 – 192.168.1.59

W7X64 – 192.168.1.40

В текущем примере моей заметки — это пакет для организации безопасного подключения к системе посредством SSH, т. е. Пакет OpenSSH, как серверная так и клиентская часть.

Устанавливаем пакет OpenSSH через менеджер пакетов Cygwin

, Далее – в процессе установки мастер определит, какие зависимости сперва нужно до установить, соглашаемся, Далее – и начнется процесс скачивания зависимостей и самого приложений, просто ожидаем – после того, как установка пройдет успешно останется только проконтролировать, чтобы были поставлены галочки для создания ярлыков быстрого доступа к Cygwin :

  • Create icon on Desktop
  • Add icon to Start Menu

И нажать Готово.

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

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

Copying skeleton files.

These files are for the users to personalise their cygwin experience.

They will never be overwritten nor automatically updated.

ekzorchik @srv-w7x64

$ <это_консоль_ввода>

В консоли после приглашения курсора $ набираем ssh-host-config –y этим мы генерируем ключи доступа к данной машине по ssh и создаем нового пользователя cyg _ server где в качестве его пароля нужно указать текущий пароль от пользователя (в моем случае пользователь ekzorchik с дефолтный паролем 712 mbddr @) под которым происходит инсталляция пакета cygwin и дополнительных пакетов в систему:

$ ssh-host-config -y

Часть информации выводимая в консоли отвечающая за создание нового пользователя cyg _ server от имени которого будет происходит запуск инсталлированной службы « CYDWIN sshd »

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

*** Query: Reenter: 712mbddr@

Как видно, созданный пользователь инсталлирует службу в систему запуск которой будет осуществляться от имени данного пользователя ( cyg _ server ), по умолчанию она становится не запущенной, запускаю:

Win + R -> cmd.exe

C:\Users\ekzorchik>sc config sshd start= auto

SC] ChangeServiceConfig: успех

C:\Users\ekzorchik>net start sshd

Либо через запущенную терминальную консоль Cygwin Terminal :

$ cygrunsrv.exe -E sshd

$ cygrunsrv.exe -S sshd

Также важно открыть доступ к системе по порту 22 (порт по дефолту). Для этого нужно добавить правило в брандмауэр для всех профилей системы:

netsh avdfirewall firewall add rull name=”SSH Server” dir=in protocol=tcp localport=22 action=allow

Проверим, открыт ли порт на котором работает служба SSH в системе:

C:\Users\ekzorchik>netstat -an | findstr :22

TCP 0.0.0.0:22 0.0.0.0:0 LISTENING

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

Из вывода ясно, что порт открыт.

По такому же принципу шагов описанных выше устанавливаю и на другую систему с осью Windows 7 но применительно к архитектуре x86, хотя разницы в шагах вообщем-то никакой. Просто мне нужно для тестирования и показа, как это работает в дальнейшем.

Следующим шагом перехожу к тестированию подключения к системе посредством SSH соединения, в роли клиента на подключение к системе может использоваться, как консольный вариант — это через Cygwin Terminal, так и отдельным приложением ,к примеру утилита — Putty. Я же буду использовать Cygwin Terminal.

$ hostname

$ ssh -l ekzorchik 192.168.1.40 -p 22

ECDSA key fingerprint is 57:8b:b2:35:43:f5:18:22:c0:e7:61:9b:44:d4:56:fe.

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

Отлично, работает, теперь же надо сделать, чтобы авторизация шла только по ключам доступа.

Ниже практические шаги, как это сделать:

$ mkdir -p

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

$ ssh-keygen -t dsa

Generating public/private dsa key pair.

Enter file in which to save the key (/home/ekzorchik/.ssh/id_dsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/ekzorchik/.ssh/id_dsa.

Your public key has been saved in /home/ekzorchik/.ssh/id_dsa.pub.

The key fingerprint is:

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

/.ssh/id_dsa.pub | ssh -p 22 ekzorchik@192.168.1.59 'umask 077;test -d .ssh | cat >>

Точно такие же шаги проделываем на второй системе по отношения к первой, но не забываем указать соответствующий IP адрес системы, в моем случае — это 192.168.1.40

/.ssh/id_dsa.pub | ssh -p 22 ekzorchik@192.168.1.40 'umask 077;test -d .ssh | mkdir .ssh ; cat >> .ssh/authorized_keys'

/.ssh/id_dsa.pub | ssh -p 22 ekzorchik@192.168.1.40 'umask 077;test -d .ssh | cat >> .ssh/authorized_keys'

$ ssh -l ekzorchik 192.168.1.40 -p 22 Last login: Thu Nov 27 18:36:23 2014 from 192.168.1.59

Но пока авторизация по ключам не заработает, в системах по умолчанию отключены все параметры настроек службы OpenSSH. Поэтому сперва произведу кое-какую настройку, в качестве редактора посредством которого буду изменять конфигурационные файлы выступит установленный по умолчанию — редактор vi: (советую познакомиться с его работой подробно, к примеру по моей заметке или по книгам посвященным Linux), но для быстро по первой настройке доустановлю пакет простого текстового редактора nano. Для этого снова запускаем setup-x86_64.exe – шаги до установки пакета точно такие же которые я проделывал выше когда устанавливал OpenSSH. Ниже скриншот поиска и установки необходимого бинарного пакета, исходники пакета не требуются поэтому их и не отмечаю.

Устанавливаю пакет консольного редактора nano

Далее переходим к редактированию настроек сервиса SSHD:

$ nano /etc/sshd_config

Сохраняем внесенные ( Ctrl + O, Ctrl + X) изменения и перезапускаю службу для применения настроек.

$ cygrunsrv.exe -E sshd

$ cygrunsrv.exe -S sshd

Точно такие же действия проделываем и на другой системе.

Теперь пробует подключиться друг к другу посредством ключей, а не паролей:

Работает с 192.168.1.40 на 192.168.1.59

$ !22

ssh ekzorchik@192.168.1.59 -p 22

Last login: Thu Nov 27 17:58:06 2014 from w7x64

Работает с 192.168.1.59 на 192.168.1.40

$ ssh -l ekzorchik 192.168.1.40 -p 22

Last login: Thu Nov 27 18:40:21 2014 from 192.168.1.59

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.


Если вы себя комфортно чувствуете при работе с Linux/Unix и хотели бы получить SSH-доступ к вашей машине на Windows 7, то такое приложение, как Cygwin сможет вам обеспечить такую возможность и предоставить знакомую среду для работы. При этом необходимо проделать всего несколько простых настроек.

Установка OpenSSH.

Для работы по SSH нам необходимо установить OpenSSH. Для этого, скачайте файл setup.exe, который доступен для скачивания в конце этой статьи и запустите его.



Конфигурация OpenSSH in Cygwin.

В отличии от Linux дистрибутивов, OpenSSH в Windows 7 не сможет настроить сам себя автоматически для работы. Необходимо выполнить несколько простых шагов. Для начала, кликните правой кнопкой по ярлыку Cygwin и запустите его от имени администратора (Run as administrator):


Так мы убедимся, что имеем все права для корректной настройки. Вы увидите пустое окно Cygwin.


Далее введите следующую команду:





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



Конечно же, необходимо ввести пароль для этого аккаунта.



Вы можете перезагрузиться или ввести следующую команду для запуска службы sshd:


Конфигурация пользователя в SSH.

Теперь необходимо создать соответственно SSH-ключи для вашего привилегированного аккаунта. Просто запустите Cygwin и введите в консоль следующую команду:





Вот и все. Все уже настроено и если вы хотите проверить вашу конфигурацию, то введите следующую команду в консоль Cygwin:

ssh –v localhost



Если все прошло удачно, то вы увидите стандартную bash-строку.

Возможные проблемы.

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




Терминальный SSH доступ к удалённой машине - это полноценная работа в консоли, как если бы она была локальной. Увы этого нет в Шindows, там терминал убогий, и расширается только сторонними средствами. А ведь хочется не покидая удобной среды залогиниться на вендовой машине для операций с файлами. Чего туда каждый раз по тимвьюверу лезть?

NOTE: Как мне уже подсказали, я опоздал, и надо осваивать более свежий софт MSYS2 - Arch Linux-подобный дистрибутив СПО для Windows. MSYS2 является форком Cygwin.

Но это уже в другой раз, а ниже краткая инструкция, как это сделать средствами Cygwin:

Cygwin — это UNIX-подобная среда и интерфейс командной строки для Microsoft Windows.
Программу Cygwin можно качать с официального сайта: 32 битная и 64 битная версии программы. Устанавливается довольно просто по принципу далее-далее, готово. Можно указать свою папку для локального хранилища инсталятора, и выбрать зеркало - я выбрал 4е сверху. Далее не очень удобный репозиторий, где лучше выбрать отображение по категориям и выделить к установке бинарных файлов Net/openssh и Editor/vim. Затем опять далее и после скачивания пакетов всё будет готово. Подробнее с картинками про инсталяцию можно посмотреть по одной из ссылок в конце записи.

После установки появляется ярлык на Cygwin64 Terminal, запускайте его от имени администратора. Это почти полноценный Linux терминал, в нём уже можно оперировать с файлами Windows используя мощь команд grep и прочих, которые установите из репозитория. В данном случае интересует настройка ssh сервера, запуск его как службы windows, чтобы иметь постоянный доступ к файлам вендомашины по сети с любого linux терминала.

1) Сконфигурировать файл настроек /etc/ssh_config поможет мастер:

Напоминаю, что команды в линуксе (это же консоль linux) можно вводить не полностью, а первые буквы и жать автодополнение по tab.

Отвечайте на все вопросы yes. Если что пошло не так, всегда можно прерваться по ^C и начать заново.

Или отредактировать его вручную (необязательно) с помощью редактора:

Хотя в конфиге всё равно следует расскоментировать строки:

Или просто перезагрузиться, и она стартует самостоятельно.
В случае каких сбоев можно удалить службу, затем повторить запуск мастера, он создаст её заново. Удалить можно так:

Cгенерировать ключи DSA или RSA необходимо лишь в случае доступа из этой Cygwin консоли в другое место с аутентификацией по ключу. Для доступа на ssh сервер Cygwin этого делать нет необходимости, наоборот с клиентской машины нужно скопировать публичный ключ в authorized_keys:

*** Query: Shall I create a SSH2 RSA identity file for you? (yes/no) yes
*** Query: Do you want to use this identity to login to this machine? (yes/no) yes
*** Query: Shall I create a SSH2 DSA identity file for you? (yes/no) no
*** Query: Shall I create a SSH2 ECDSA identity file for you? (yes/no) no
*** Query: Shall I create a (deprecated) SSH1 RSA identity file for you? (yes/no) no

Всё, теперь виндовая машина доступна по ssh. Если ключи и настройки указаны верно, то подключаться к ней следует так, указывая имя пользователя удалённой системы:

Читайте также: