web-dev-qa-db-fra.com

Quelles sont les causes Erreur SSH: keex_exchange_Identification: connexion fermée par l'hôte distant?

J'ai configuré un serveur SSH en ligne accessible au public par n'importe qui. Par conséquent, je reçois beaucoup de connexions d'IP dans le monde entier. Beirdly, personne ne tente d'authentifier pour ouvrir une session. Je peux me connecter et authentifier sans aucun problème.

De temps en temps, je reçois le error: kex_exchange_identification: Connection closed by remote Host Dans les journaux du serveur. Quelles sont les causes?

Voici 30 minutes de journaux SSH (les IP publiques ont été expurgés):

# journalctl SYSLOG_IDENTIFIER=sshd -S "03:30:00" -U "04:00:00"
-- Logs begin at Fri 2020-01-31 09:26:25 UTC, end at Mon 2020-04-20 08:01:15 UTC. --
Apr 20 03:39:48 myhostname sshd[18438]: Connection from x.x.x.207 port 39332 on 10.0.0.11 port 22 rdomain ""
Apr 20 03:39:48 myhostname sshd[18439]: Connection from x.x.x.207 port 39334 on 10.0.0.11 port 22 rdomain ""
Apr 20 03:39:48 myhostname sshd[18438]: Connection closed by x.x.x.207 port 39332 [preauth]
Apr 20 03:39:48 myhostname sshd[18439]: Connection closed by x.x.x.207 port 39334 [preauth]
Apr 20 03:59:36 myhostname sshd[22186]: Connection from x.x.x.83 port 34876 on 10.0.0.11 port 22 rdomain ""
Apr 20 03:59:36 myhostname sshd[22186]: error: kex_exchange_identification: Connection closed by remote Host

Et voici ma configuration SSH:

# ssh -V
OpenSSH_8.2p1, OpenSSL 1.1.1d  10 Sep 2019
# cat /etc/ssh/sshd_config 
UsePAM yes
AddressFamily any
Port 22
X11Forwarding no
PermitRootLogin prohibit-password
GatewayPorts no
PasswordAuthentication no
ChallengeResponseAuthentication no
PrintMotd no # handled by pam_motd
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 /etc/ssh/authorized_keys.d/%u
HostKey /etc/ssh/ssh_Host_rsa_key
HostKey /etc/ssh/ssh_Host_ed25519_key
KexAlgorithms [email protected],diffie-hellman-group-exchange-sha256
Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
MACs [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
LogLevel VERBOSE
UseDNS no
AllowUsers root
AuthenticationMethods publickey
MaxStartups 3:100:60

Après avoir recherché sur le Web, j'ai vu des références à MaxStartups indiquant que cela pourrait être la raison de cette erreur, mais après avoir modifié la valeur par défaut comme indiqué dans mon sshd_config et tenter plus de 3 connexions, le serveur indique sans ambiguïté le problème

Apr 20 07:26:59 myhostname sshd[31468]: drop connection #3 from [x.x.x.226]:54986 on [10.0.0.11]:22 past MaxStartups

Donc, quelles causes error: kex_exchange_identification: Connection closed by remote Host?

5
soliz

Beirdly, personne ne tente d'authentifier pour ouvrir une session.

Certaines araignées et services tels que Shodan analyse les adresses IPv4 publiques pour Open Services, par ex. Masters de sel, serveurs FTP, RDPS et services SSH. Ces araignées ne se connectent généralement qu'aux services sans effectuer des étapes d'authentification valides.

Je reçois l'erreur: kex_exchange_identification: Connexion fermée par l'hôte distant dans les journaux du serveur. Quelles sont les causes?

Je n'ai pas trouvé de réponses concluantes à ce sujet, alors ... le temps de parcourir la source alors.

Dans le code source OpenSSH, kex_exchange_identification est une fonction d'échange d'identification du serveur et du client (DUH) et l'erreur erreur spécifiée . La connexion à la prise entre OpenSSH Server et Client est interrompue ( voir EPIPE ), c'est-à-dire que le client a déjà fermé sa connexion.

2
mforsetti

Je viens d'avoir ce problème exacte, et la cause était que j'avais une traduction du port qui se produise à l'intérieur de l'équilibreur de chargement, ce qui signifie que mes connexions ssh _ ont atteint l'hôte sur le port 80 au lieu de port 22.

L'hôte a-t-il finalement terminé les connexions et le message d'erreur renvoyé à mon terminal était comme suit;

~/Documents/Projects$ ssh -vvvvA [email protected]
OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/dave/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug2: resolve_canonicalize: hostname xx.xx.xx.250 is address
debug2: ssh_connect_direct
debug1: Connecting to xx.xx.xx.250 [xx.xx.xx.250] port 22.
debug1: Connection established.
debug1: identity file /Users/dave/.ssh/id_rsa type 0
debug1: identity file /Users/dave/.ssh/id_rsa-cert type -1
debug1: identity file /Users/dave/.ssh/id_dsa type -1
debug1: identity file /Users/dave/.ssh/id_dsa-cert type -1
debug1: identity file /Users/dave/.ssh/id_ecdsa type -1
debug1: identity file /Users/dave/.ssh/id_ecdsa-cert type -1
debug1: identity file /Users/dave/.ssh/id_ed25519 type -1
debug1: identity file /Users/dave/.ssh/id_ed25519-cert type -1
debug1: identity file /Users/dave/.ssh/id_xmss type -1
debug1: identity file /Users/dave/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.1
debug1: kex_exchange_identification: banner line 0: HTTP/1.1 400 Bad Request
debug1: kex_exchange_identification: banner line 1: Server: nginx/1.14.0 (Ubuntu)
debug1: kex_exchange_identification: banner line 2: Date: Fri, 20 Nov 2020 09:30:23 GMT
debug1: kex_exchange_identification: banner line 3: Content-Type: text/html
debug1: kex_exchange_identification: banner line 4: Content-Length: 182
debug1: kex_exchange_identification: banner line 5: Connection: close
debug1: kex_exchange_identification: banner line 6:
debug1: kex_exchange_identification: banner line 7: <html>
debug1: kex_exchange_identification: banner line 8: <head><title>400 Bad Request</title></head>
debug1: kex_exchange_identification: banner line 9: <body bgcolor="white">
debug1: kex_exchange_identification: banner line 10: <center><h1>400 Bad Request</h1></center>
debug1: kex_exchange_identification: banner line 11: <hr><center>nginx/1.14.0 (Ubuntu)</center>
debug1: kex_exchange_identification: banner line 12: </body>
debug1: kex_exchange_identification: banner line 13: </html>
kex_exchange_identification: Connection closed by remote Host

Correction de la traduction du port interne, et maintenant le problème est parti.

1
Dave Rix