Estoy no utilizar hosts.allow
o hosts.deny
, aún más SSH trabaja ventanas de mi-máquina (mismo equipo portátil, diferente disco duro), pero no mi máquina Linux.
ssh -vvv root@host -p port
da:
OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to host [host] port <port>.
debug1: Connection established.
debug1: identity file /home/torxed/.ssh/id_dsa type -1
debug1: identity file /home/torxed/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6
ssh_exchange_identification: read: Connection reset by peer
En la máquina de Windows todo funciona bien, así que verifiqué los registros de seguridad y las líneas allí son idénticas, el servidor trata las dos "máquinas" diferentes de manera diferente y ambas se permiten mediante autenticación de clave pública.
Entonces eso lleva a la conclusión de que esto debe ser un problema con mi computadora portátil ArchLinux local ... pero ¿qué?
[torxed@archie ~]$ cat .ssh/known_hosts
[torxed@archie ~]$
Entonces ese no es el problema ...
[torxed@archie ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
No hay conflictos con la configuración del firewall (por ahora).
[torxed@archie ~]$ ls -la .ssh/
total 20
drwx------ 2 torxed users 4096 Sep 3 2013 .
drwx------ 51 torxed users 4096 May 11 11:11 ..
-rw------- 1 torxed users 1679 Sep 3 2013 id_rsa
-rw-r--r-- 1 torxed users 403 Sep 3 2013 id_rsa.pub
-rw-r--r-- 1 torxed users 170 May 11 11:21 known_hosts
Los permisos parecen estar bien (lo mismo en el servidor). También se intentó sin configurar /etc/ssh/ssh_config
con el mismo resultado, excepto por una gran cantidad de configuración automática en el cliente que termina con el mismo error.
fuente
iptables-save|grep -v '^#'
, que incluirá las otras tablas (por ejemplo,nat
ymangle
). Si están vacíos, simplemente dígalo. Suiptables
salida anterior está limitada por defecto a lafilter
tabla. Además, en el servidor SSH, ejecute SSH en un puerto alternativo como este y proporcione la salida de depuración.ip6tables-save
)?Respuestas:
Si ha descartado cualquier factor "externo", el siguiente conjunto de pasos generalmente ayuda a reducirlo. Entonces, si bien esto no responde directamente a su pregunta, puede ayudar a rastrear la causa del error.
Solución de problemas
sshd
En general, lo que encuentro muy útil en tales casos es comenzar
sshd
sin dejar que demonice. El problema en mi caso fue que nisyslog
tampocoauth.log
mostró nada significativo.Cuando lo comencé desde la terminal obtuve:
¡Mucho mejor! Este mensaje de error me permitió ver qué está mal y solucionarlo. Ninguno de los archivos de registro contenía esta salida.
NB: al menos en Ubuntu, este
$(which sshd)
es el mejor método para satisfacer lossshd
requisitos de una ruta absoluta. De lo contrario obtendrá el siguiente error:sshd re-exec requires execution with an absolute path
. Esto-p 10222
hace quesshd
escuche en ese puerto alternativo, anulando el archivo de configuración, esto es para que no choque consshd
instancias potencialmente en ejecución . Asegúrese de elegir un puerto libre aquí.Finalmente: conéctese al puerto alternativo (
ssh -p 10222 user@server
).Este método me ha ayudado muchas veces a encontrar problemas, ya sean problemas de autenticación u otros tipos. Para obtener resultados realmente detallados
stdout
, use$(which sshd) -Ddddp 10222
(tenga en cuenta lo agregadodd
para aumentar la verbosidad). Para más depuración, verifique la bondadman sshd
.fuente
También puede tener un host cuya memoria está tan fragmentada que no puede asignar a una página una memoria contigua para bifurcar el proceso para alojar una sesión SSH.
En tal caso, puede obtener cualquiera de los mensajes:
o:
dependiendo de qué tan lejos llegue el host antes de que salga.
Si la causa aparente es la fragmentación de la memoria, la solución es acceder al servidor por otros medios y reiniciar algunos de los servicios pertinentes. He encontrado que Apache y MySQL son los culpables de las máquinas virtuales, ya que las máquinas virtuales no tienen una partición de intercambio. De lo contrario, reinicie el host.
fuente
Por las dudas, porque esto me pasó a mí. ¡Asegúrese de tener sshd ejecutándose en el host!
Es un fracaso estúpido, pero podría ser realmente tu problema.
fuente
sshd
no se estaba ejecutando, la conexión no se cerraría pero se rechazaría (intentessh -p someportwithoutsshd localhost
).Encontré que este error se debió a las sesiones ssh excedidas en el servidor. Encontré que los hosts intentaban conectarse y eliminé todas las sesiones de todos los clientes. El problema se resolvió después de limpiar todas las sesiones.
fuente
who
y eliminando los procesos del usuario.Me encontré con el
ssh_exchange_identification: read: Connection reset by peer
problema en un script que inicia 16 o más sesiones ssh en un bucle. sshd aparentemente no puede seguir el ritmo; agregar un sueño corto resolvió mi problema:fuente
O puede que hayas hecho lo que hice anoche y eliminé / var / empty. Aparentemente, ese directorio y sus permisos son esenciales para el funcionamiento de sshd y no rehacerá el directorio cuando se reinicie
/etc/init.d/sshd
, no se reiniciará y nada systemd le dirá por qué.Encontré el problema ejecutando sshd en primer plano:
Reconstruir los directorios resolvió el problema en mi caso:
Nota para los programadores de Linux: ¿Cosas de importancia crítica en
/var/empty
... realmente?fuente
ls -ld /var/empty
→ls: cannot access '/var/empty': No such file or directory
. Entonces, al menos una distribución ha eliminado esto por completo. Al observar el/etc/init.d/sshd
script, parece que en Debian, al menos, el directorio de separación de privilegios es ahora/var/run/sshd
y se crea en el momento del inicio si aún no existe.Recibí el error
ssh_exchange_identification: Connection closed by remote host
al intentar conectarme a SSH: realicé un reenvío de puerto remoto para el puerto SSH 22 de mi computadora local para poder acceder temporalmente desde un servidor remoto en Internet.De hecho, el error fue simplemente mostrar porque no recordaba que he deshabilitado el servicio SSH en el arranque así que tuve que iniciar el servicio SSH en mi equipo local:
sudo service ssh start
.fuente
Primero lo primero; telnet a la dirección IP del host para verificar si el puerto 22 está realmente escuchando (abierto) en ese host:
(de lo contrario, puede conectar un cable de consola para iniciar sesión)
En mi caso, no funcionaba y conecté un cable de consola para iniciar sesión. Una vez que inicié sesión, descubrí que las 5 líneas VTY estaban ocupadas en ese host (un enrutador Cisco).
Limpié las conexiones antiguas que colgaban allí para liberar las líneas VTY, funcionó. Agregué el comando "exec-timeout 15" debajo de las líneas VTY. Luego quité el cable de la consola.
Lección:
Asegúrese de establecer un tiempo de espera de 5-10 minutos en todos sus dispositivos (si no se detecta actividad).
fuente
Mi caso se configuró por error proxy de socket (que no funciona). Obtuve exactamente la misma salida ssh -vvv y un registro sshd vacío.
fuente
El error
ssh_exchange_identification: Connection closed by remote host
puede ocurrir por algunas razones desconocidas. Cuando estaba usando el código de Visual Studio . El mismo error ocurrió cuando traté de extraer del repositorio remoto usando elgit pull
comando.Acabo de cerrar el terminal incorporado y abrí el terminal de Ubuntu y volví a tirar. Y fue exitoso
fuente
Desde atrás
CentOS Linux release 7.4.1708 (Core)
conOpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
una conexión sin puertos de filtrado tuve:¡Y resultó que mi Raspberry Pi estaba apagada!
Estaba pensando que un host no encendido habría arrojado el error "No hay ruta al host". El Raspberry Pi está detrás de mi enrutador ISP, por lo que probablemente fue el que estaba cerrando la conexión.
Luego repetí el experimento (intentando conectar una Raspberry Pi apagada) desde otra conexión a Internet que tampoco filtraba puertos con Debian Stretch
OpenSSH_7.4p1 Debian-10+deb9u3, OpenSSL 1.0.2l 25 May 2017
y esta vez tenía lo esperado:fuente