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.

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

ALL: 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 Wrappers . Программа сервера (в данном случае sshd) должна принять TCP-соединение, получить IP-адрес удаленной конечной точки, а затем вызвать оболочку TCP, чтобы узнать, следует ли разрешить клиент. Если libwrap говорит «нет», то сервер обычно сбрасывает соединение.
Кенстер

См , например , sshd.c . Ищите LIFWRAP ifdefs. Вот функция hosts_access, которую вызывает sshd. Также отмечу, что самая последняя версия sshd.c удаляет поддержку libwrap.
Кенстер

@ Кенстер, мой плохой, ты прав. Я попробовал это , и я получаю следующее сообщение об ошибке: ssh_exchange_identification: Connection closed by remote host. Добрый день на СУ :)
мтак

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 и включите его. установить вход в систему, чтобы найти и установить флажок.

Это решит проблему: user @ mymachine ~ $ net start sshd Произошла системная ошибка 1069.

Служба не запущена из-за ошибки входа в систему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.