Сервер Cygwin ssh не приймає з'єднання


14

Я щойно налаштував SSH-сервер (OpenSSH) на машині Windows 7 за допомогою cygwin, і я намагаюся підключитися до нього за допомогою PuTTY на машині Windows Vista, але я продовжую вимикати з’єднання. Я перевірив мережеву активність на машині Win 7 за допомогою Wireshark і виявив, що я отримую TCP SYN на порт 22 на машині Win 7, але ssh-сервер, схоже, не відповідає. Я перевірив номер порту, який налаштовано для використання sshd, перевірив свої правила брандмауера та перевірив, чи можу я ssh localhost (що я можу просто визначити). Я абсолютно не маю уявлення, як вирішити цю проблему.


Ви, ймовірно, повинні ще раз перевірити брандмауер та / або детально розглянути цей аспект.
jjlin

Відповіді:


23

Можливо, у вас працює брандмауер Windows. Відкрийте: Панель управління -> Брандмауер Windows -> Дозволити програму або функцію через брандмауер Windows

Натисніть кнопку "Змінити налаштування", а потім кнопку "Дозволити іншу програму ...". SSHD, мабуть, немає у списку, який з’являється, тому скористайтесь кнопкою «Огляд ...», щоб знайти двійковий файл, і натисніть «Відкрити», а потім «Додати». Моя була в C: \ cygwin \ usr \ sbin \ sshd.exe

Десь там ви можете вирішити, які "типи мережевого розташування ..." ви хочете використовувати. Я залишив шахту з приватною перевіреною та публічною без нагляду. Тепер я можу ввійти дистанційно.


На додаток до відповіді Франка , коли я встановив VPN конфіденційності на комп’ютер у своїй домашній мережі, я побачив цю саму проблему. Це було тому, що з VPN комп'ютер тепер з'єднувався зі sshd у загальнодоступній мережі. Щоб виправити це, мені довелося дозволити sshd через брандмауер Windows як для публічних, так і приватних.
Джеймс Гіршорн

5

Чи вказано ваш sshd_config ListenAddress як 0.0.0.0 чи 127.0.0.1 ?

Якщо це 0,0.0,0 або просто прокоментовано, ви можете підключитися з-за машини, тобто з іншого комп'ютера.

Якщо це 127.0.0.1 (або будь-яке інше число 127.0.0.x ), то це ТОЛЬКІ прослуховування на LOCALHOST, і ви можете ввійти в систему лише з однієї машини. Зовнішні машини відмовляються.


2
Це коментується.
Сурма

1

Після того як я не заплутався з брандмауером Windows, я зрештою виявив, що мені довелося дозволити підключення до власної підмережі в самому Cygwin через файл /etc/hosts.allow.

Цей рядок (використовуючи мою підмережу) як перше правило вирішив проблему для мене.

ВСІ: 192.168.0.0/24: дозволити


1
Проблема з hosts.allow або hosts.deny не спричинить затримку з'єднання. Це призведе до того, що SSH-сервер прийме з'єднання, а потім перерве його під час процесу аутентифікації.
Кенстер

@Kenster hosts.allow і hosts.deny працюють на рівні TCP. Ви не зможете підключитися до SSH-сервера, оскільки ви заблоковані на рівні 4, перш ніж навіть дістатися до SSH-сервера.
mtak

@mtak Ні, це неправда. hosts.allow і hosts.deny - файли конфігурації для обгортки TCP . Серверна програма (sshd в цьому випадку) повинна прийняти TCP-з'єднання, отримати IP-адресу віддаленої кінцевої точки, а потім викликати обгортки TCP, щоб побачити, чи потрібно дозволити клієнту. Якщо libwrap каже "ні", сервер зазвичай припиняє з'єднання.
Кенстер

Див , наприклад , sshd.c . Шукайте LIBWRAP ifdefs. Ось функція hosts_access, яку викликає sshd. Я також зазначу, що остання версія sshd.c видаляє підтримку libwrap.
Кенстер

@Kenster, мій поганий, ти маєш рацію. Я спробував це , і я отримую наступне повідомлення про помилку: ssh_exchange_identification: Connection closed by remote host. Добрий день на СУ :)
mtak

1

Для мене проблема полягала у неправильному володінні /var/emptyфайлом. Проблема стала очевидною після переведення sshd в режим налагодження з /usr/sbin/sshd.exe -D -dd. Мені довелося виправити це за допомогою:

chown [user]:[group] /var/empty

Користувач і група були взяті з ls -la /varкаталогу (просто збігалися з іншими файлами). Більше інформації тут: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC340


Дякую, що вказалиsshd -D -dd
Джон Окслі

0

Переконайтеся, що виграли 7 Антивірус не блокує порт 22. Також перейдіть на панель сервісів Windows і знайдіть CYGWINsshd і ввімкніть його. встановити вхід, щоб знайти та встановити прапорець.

Це вирішить проблему: у користувача @ mymachine ~ $ net start sshd сталася системна помилка 1069.

Служба не почалася через помилку входу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.