Connexion SSH: ssh_exchange_identifcation


9

Je me connecte à un serveur distant via mon Mac depuis environ un mois maintenant. Récemment cependant, j'ai essayé de me connecter en utilisant ssh dylan @ MY_IP et j'ai reçu ce message.

ssh_exchange_identification: read: Connection reset by peer

J'ai également reçu des informations de diagnostic ...

debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to {MY IP{ [MY IP] port 22.
debug1: Connection established.
debug1: identity file /Users/watson/.ssh/id_rsa type -1
debug1: identity file /Users/watson/.ssh/id_rsa-cert type -1
debug3: Incorrect RSA1 identifier
debug3: Could not load "/Users/watson/.ssh/id_dsa" as a RSA1 public key
debug1: identity file /Users/watson/.ssh/id_dsa type 2
debug1: identity file /Users/watson/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2

Après avoir fait quelques recherches, j'ai essayé ce qui suit ...

  1. Redémarré mon routeur
  2. Supprimé mon fichier "known_hosts"
  3. Supprimé mon fichier "known_hosts"
  4. Sortie et renouvellement de mon DHCP
  5. J'ai également essayé à partir d'un autre appareil (Windows) en utilisant Putty avec une erreur également

Notez que je n'ai apporté aucune modification au serveur pour empêcher cette communication.

De plus, je ne sais pas si cela entraînerait des problèmes, mais je me suis connecté à lui par son nom de domaine ainsi que son IP.

De plus, j'ai pu me connecter avec succès à partir d'une autre adresse IP.

Je sais que c'est un gros problème avec de nombreuses ressources, mais beaucoup de solutions n'ont pas fonctionné et je n'ai vraiment vu aucun type de résolution pour personne.

Mise à jour

Je l'ai forcé au protocole 1. Au lieu de "Connexion réinitialisée par l'homologue", je reçois maintenant "Connexion fermée par l'hôte distant". L'exécuter avec des informations de débogage a révélé:

debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to MY_IP [MY_IP] port 22.
debug1: Connection established.
debug1: identity file /Users/watson/.ssh/identity type -1
debug1: identity file /Users/watson/.ssh/identity-cert type -1
ssh_exchange_identification: Connection closed by remote host

Utilisez-vous l'authentification par clé publique? Avez-vous une clé /Users/watson/.ssh/id_dsa? Essayez de sauvegarder le fichier et supprimez-le.
pabouk

Je n'utilise pas d'authentification par clé publique; cependant, il existe une seule clé dans le fichier. J'ai essayé de supprimer le fichier, mais aucune modification n'a été exécutée.
Dylan

si c'est un problème avec la version du protocole, vous pouvez forcer à vous connecter avec la version 1 du protocole avecssh -1 ...
wkaha

Référez-vous à la nouvelle modification sur le post
Dylan

Réponses:


4

C'est ainsi que j'ai résolu l'erreur "ssh_exchange_identification: Connexion fermée par l'hôte distant" lors de la connexion à un serveur SSH.

J'ai eu cette erreur en essayant de me connecter à une machine Linux embarquée, après avoir déballé un paquet à la racine. De nombreux fichiers de bibliothèque ont été remplacés, y compris libssl.

Essayant de se connecter:

chetic@ubuntu:~$ ssh -v root@192.168.1.100
OpenSSH_6.2p2 Ubuntu-6ubuntu0.3, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to SC [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file /home/delaval/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/delaval/.ssh/id_rsa-cert type -1
debug1: identity file /home/delaval/.ssh/id_dsa type -1
debug1: identity file /home/delaval/.ssh/id_dsa-cert type -1
debug1: identity file /home/delaval/.ssh/id_ecdsa type -1
debug1: identity file /home/delaval/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.3
ssh_exchange_identification: read: Connection reset by peer

La recherche sur Google semblait suggérer de vérifier hosts.deny et hosts.allow, mais ma machine cible n'avait pas de tels fichiers.

Après un redémarrage (selon la suggestion de Karthik), sshd ne fonctionnait pas. J'ai essayé de démarrer manuellement sshd sur la cible:

# sshd
OpenSSL version mismatch. Built against 1000002f, you have 1000105f

J'ai remplacé /usr/lib/libssl.a par la version originale et j'ai commencé sshd et les choses étaient revenues à la normale. Dans mon cas, le problème était dû à une version incorrecte du package que j'avais initialement décompressé vers root.


3

J'obtenais la même erreur (mais de n'importe quelle machine, y compris la machine gênante via ssh localhost).

Cela a commencé lorsque j'ai migré un profil d'utilisateurs; c'est-à-dire après avoir copié des fichiers en tant que root, puis fait des commandes commechown -R username /Users/username/Destop

de toute façon, vous ne savez pas vraiment pourquoi / var / empty owner a été changé en nom d'utilisateur, mais sshdoit absolument /var/emptyappartenir à root (sinon vous obtenez ssh_exchange_identification: read: Connection reset by peer):

    sudo chown root /var/empty

Merci! Changer le propriétaire de a /var/emptyrésolu le problème pour moi.
Yevhen Pavliuk,

1

Ce n'est pas un problème avec votre machine locale, mais un problème côté serveur. Il peut y avoir plusieurs facteurs à l'origine de ce problème:

  1. Modifications de la configuration /etc/hosts.allow ou /etc/hosts.deny sur le serveur distant.
  2. Charge de serveur élevée.

Dans le passé, lorsque j'ai eu ces problèmes, j'ai fait l'une des deux choses, dans l'ordre suivant:

  1. Modifiez le /etc/hosts.allow comme référencé dans l'article ci-dessus. (et redémarrez le serveur SSH)
  2. Si /etc/hosts.allow est déjà comme il faut, redémarrez simplement le serveur SSH (et soyez prudent lorsque vous faites cela!)
  3. Si le redémarrage ne fonctionne pas, régénérez les clés du serveur et redémarrez le serveur SSH (cela est risqué, car chaque utilisateur se connectant à cette machine obtiendra une erreur sur le serveur ayant changé les clés)

Le plus souvent, 1 résout le problème, mais j'ai dû en faire 2 dans certains cas .. Je n'ai pas été en mesure de comprendre pourquoi c'est le cas, seulement que cela a fonctionné. Peut-être que cela a quelque chose à voir avec la façon dont la clé est présentée, ou peut-être qu'elle a été corrompue d'une manière ou d'une autre - je n'en suis pas sûr. Mais ce que je sais, c'est que l'erreur est entièrement liée au serveur et à la façon dont la prise de contact se produit lorsque la connexion SSH est établie.


1

J'ai configuré SSH avec Cygwin et dans mon cas, c'est le pare-feu Windows qui a causé exactement cette erreur, alors assurez-vous d'autoriser les connexions au port 22.


0

J'ai réussi à résoudre ce problème moi-même très facilement.

Dans OS X normal, vous pouvez résoudre ce problème en basculant simplement "Connexion à distance" dans les Préférences Système / Partage.

Cependant, s'il s'agit d'un serveur sans tête (comme dans mon cas), vous pouvez utiliser l'application OSX Server pour accéder à (votre nom de serveur) / Paramètres et basculer "Connexions Secure Shell on et off à nouveau"


1
J'ai également remarqué que la façon dont vous pouvez contourner le problème, mais cela ne le résout pas: la désactivation de la connexion à distance affecte gravement le système, et devoir basculer la connexion à distance chaque fois que l'on veut ssh à un endroit spécifique n'est pas une solution viable .
Ant6n

Oui, c'est toujours un horrible problème que j'ai. Je viens de créer un script cron racine qui redémarre le service tous les minuit.
Sirens

0

Si vous utilisez une clé privée ou une clé de sécurité pour vous connecter à votre serveur, vous devez modifier l'autorisation pour le fichier de clé sur 660, à l'aide de la commande

sudo chmod 660 File_Name


1
(1) Bien que cela puisse être la cause du sshnon-fonctionnement, il n'est pas clair comment ce problème infligerait au hasard un système qui fonctionne. (2) Cette réponse, telle qu'elle est, serait plus utile si vous identifiez le fichier dont vous parlez, ou fournissez des instructions pour permettre à un utilisateur de l'identifier. (3) Je suppose que vous parlez d'un fichier dans (sous) le répertoire personnel de l'utilisateur. Si tel est le cas, cela sudone devrait pas être nécessaire.
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.