Le serveur Cygwin SSH n'accepte pas les connexions

14

Je viens de configurer un serveur SSH (OpenSSH) sur une machine Windows 7 à l'aide de cygwin et j'essaie de me connecter à l'aide de PuTTY sur une machine Windows Vista, mais je n'arrive pas à expirer. J'ai vérifié l'activité réseau sur la machine Win 7 avec Wireshark et j'ai constaté que je recevais TCP SYN sur le port 22 sur la machine Win 7, mais le serveur ssh ne semble pas répondre. J'ai vérifié que le numéro de port que sshd est configuré pour utiliser, vérifié mes règles de pare-feu et vérifié que je peux ssh localhost (que je peux très bien). Je ne sais absolument pas comment résoudre ce problème.

Surma
la source
Vous devriez probablement vérifier à nouveau votre pare-feu et / ou élaborer sur cet aspect.
jjlin

Réponses:

23

Vous pouvez avoir le pare-feu Windows en cours d'exécution. Ouvrir: Panneau de configuration -> Pare-feu Windows -> Autoriser un programme ou une fonctionnalité via le pare-feu Windows

Cliquez sur le bouton "Modifier les paramètres" puis sur le bouton "Autoriser un autre programme ...". SSHD n'est probablement pas dans la liste qui s'affiche, alors utilisez le bouton "Parcourir ..." pour trouver le binaire et cliquez sur "Ouvrir" puis "Ajouter". Le mien était dans C: \ cygwin \ usr \ sbin \ sshd.exe

Quelque part, vous pouvez décider quels "types d'emplacement réseau ..." vous souhaitez utiliser. J'ai laissé le mien avec Private vérifié et public non contrôlé. Je peux maintenant me connecter à distance.

Franc
la source
Suite à la réponse de Frank , lorsque j'ai installé un VPN privé sur un ordinateur de mon réseau domestique, j'ai vu ce même problème. C'était parce qu'avec le VPN, l'ordinateur se connectait maintenant avec le sshd sur un réseau public. Pour résoudre ce problème, j'ai dû autoriser sshd à travers le pare-feu Windows pour les emplacements publics et privés.
James Hirschorn
5

Est-ce que ton sshd_config spécifie ListenAddress comme 0.0.0.0 ou 127.0.0.1 ?

Si c'est 0.0.0.0 ou simplement commenté, alors vous pouvez vous connecter depuis l'extérieur de la machine, c'est-à-dire depuis un autre ordinateur.

Si c'est 127.0.0.1 (ou tout autre 127.0.0.x numéro ), alors c'est UNIQUEMENT à l'écoute sur LOCALHOST, et vous ne pouvez vous connecter qu'à partir de la MÊME machine. Les machines externes sont refusées.

lornix
la source
2
C'est commenté.
Surma
1

Après avoir joué avec le pare-feu Windows sans aucun effet, j'ai finalement trouvé que je devais autoriser les connexions à mon propre sous-réseau dans Cygwin lui-même via le fichier /etc/hosts.allow.

Cette ligne (en utilisant mon sous-réseau) comme première règle a résolu le problème pour moi.

TOUS: 192.168.0.0/24: autoriser

chriswhitmore
la source
1
Un problème avec hosts.allow ou hosts.deny ne provoquerait pas de dépassement de délai de connexion. Cela obligerait le serveur SSH à accepter la connexion, puis à la supprimer pendant le processus d'authentification.
Kenster
@Kenster hosts.allow et hosts.deny fonctionnent au niveau TCP. Vous ne pourriez pas vous connecter au serveur SSH car vous êtes bloqué au niveau de la couche 4, avant même d'atteindre le serveur SSH.
mtak
@mtak Non, ce n'est pas vrai. hosts.allow et hosts.deny sont des fichiers de configuration pour TCP Wrappers . Le programme serveur (sshd dans ce cas) doit accepter la connexion TCP, obtenir l'adresse IP du point de terminaison distant, puis appeler des wrappers TCP pour voir si le client doit être autorisé. Si libwrap dit non, le serveur abandonne généralement la connexion.
Kenster
Voir par exemple sshd.c . Recherchez les ifdefs LIBWRAP. Voici la fonction hosts_access que sshd appelle. Je noterai également que la version la plus récente de sshd.c supprime le support de libwrap.
Kenster
@Kenster, ma mauvaise, tu as raison. Je l' ai essayé et je reçois l'erreur suivante: ssh_exchange_identification: Connection closed by remote host. Bonne journée sur SU :)
mtak
1

Pour moi, le problème était lié à la propriété incorrecte du /var/emptyfichier. Le problème est devenu évident après avoir mis sshd en mode débogage avec /usr/sbin/sshd.exe -D -dd. J'ai dû le corriger avec:

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

L'utilisateur et le groupe ont été extraits du ls -la /varrépertoire (correspondaient juste aux autres fichiers). Voir plus d'informations ici: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC340

demisx
la source
Merci d'avoir soulignésshd -D -dd
John Oxley
0

Assurez-vous que vous êtes gagnant 7 Antivirus ne bloque pas le port 22. En outre, accédez à votre panneau de service Windows et recherchez CYGWINsshd et activez-le. définissez la connexion pour localiser et cocher la case.

Cela résoudra le problème: user @ mymachine ~ $ net start sshd Une erreur système 1069 s'est produite.

Le service n'a pas démarré en raison d'un échec de connexion.

D Go
la source