1 votos

No se puede conectar con el servidor. Conexión cerrada por el servidor remoto

Estoy tratando de hacer ssh al servidor remoto desde mi servidor local. Pero cada vez que ejecuto el comando ssh:

ssh root@x.x.x.x

Me da error:

Conexión cerrada por x.x.x.x

La salida de ssh -v -v -v -v root@x.x.x.x es:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/mona/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/mona/.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/mona/.ssh/id_rsa-cert type -1
debug1: identity file /home/mona/.ssh/id_dsa type -1
debug1: identity file /home/mona/.ssh/id_dsa-cert type -1
debug1: identity file /home/mona/.ssh/id_ecdsa type -1
debug1: identity file /home/mona/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "151.236.220.15" from file "/home/mona/.ssh/known_hosts"
debug3: load_hostkeys: loaded 0 keys
debug1: SSH2_MSG_KEXINIT sent
Connection closed by x.x.x.x

He cargado el contenido de mi id_rsa.pub en las claves known_hosts.

No puedo conectarme por ssh.

¿Puede alguien ayudarme en esto? Se lo agradeceré mucho.

Gracias.

4voto

Richard Puntos 221

Siguiendo el punto de Fred en los comentarios (y en realidad leyendo el mensaje de error), me equivoqué y ssh fue conectando. Voy a dejar mi respuesta original en la parte inferior y adicionalmente responder a la pregunta de no ser capaz de conectarse a un ssh en ejecución.

Otra buena manera de diagnosticar los problemas de ssh cuando el servidor sshd rechaza las conexiones, y si el OP es correcto nada se está registrando auth.log o syslog es ejecutarlo en un puerto separado con la depuración activada (he elegido el puerto arbitrario de 44 ).

/full/path/to/sshd -p 44 -d 

A continuación, puede conectarse con su cliente ssh y seguir depurando el problema:

ssh -p 44 root@x.x.x.x

Root (como Fred señaló en su respuesta) es un usuario que potencialmente puede ser restringido a través de la opción ssh PermitRootLogin en su sshd_config . También los tipos de métodos de autenticación utilizados por su sshd_config puede restringir aún más el acceso a a su anfitrión:

RSAAuthentication
PubkeyAuthentication
RhostsRSAAuthentication
HostbasedAuthentication
ChallengeResponseAuthentication
PasswordAuthentication
KerberosAuthentication
GSSAPIAuthentication

Mira la página man de sshd_config ( man 5 sshd_config ) para obtener más información sobre estas opciones. Por lo general, la mayoría de los sshds tienen RSAAuthentication , PubkeyAuthentication y a veces PasswordAuthentication . RSAAuthentication es específico para Protocol 1 y la mayoría de los anfitriones utilizan Protocol 2 que utiliza PubkeyAuthentication . Ambos se basan en root tener un archivo de claves (normalmente se encuentra en /root/.ssh/authorized_keys ), pero esta ubicación puede ser anulado por el AuthorizedKeysFile opción. Parece que PasswordAuthentication no está habilitado en su sshd.

Para la autenticación RSA y Pubkey se necesita un par de claves. Que has generado y viven en tu máquina cliente en /home/mona/.ssh/id_rsa y /home/mona/.ssh/id_rsa.pub . El público la mitad de estos dos archivos (la clave contenida en /home/mona/.ssh/id_rsa.pub) tendría que ponerla en el authorized_key archivo mencionado anteriormente.

Respuesta original, referida a un fallo en la conexión remota con el proceso sshd

Eso parece ser TCPWrappers o un firewall cerrando la conexión inicial.

Compruebe su auth.log o syslog archivos en /var/log ya que estos pueden proporcionar algunas pistas sobre lo que está bloqueando la conexión.

TCPwrappers se implementa normalmente a través de un /etc/hosts.allow y en algunos unixes un archivo adicional o sólo el /etc/hosts.deny (es decir, sin un archivo hosts.allow).

Las entradas suelen ser del tipo

<service> : <access list> : <allow|deny>

O

<service> : <access list>

dependiendo del tipo de envoltura tcp que se utilice. El formato de estos archivos se puede encontrar normalmente con la página man de hosts_access man 5 hosts_access . Es posible que tenga que añadir una entrada para permitir el acceso de su IP remota.

sshd : my.ip.address.here : allow

La mayoría de las distribuciones con un núcleo Linux tienden a utilizar iptables como el principal cortafuegos, aunque algunos utilizan ipchains . (Sé que FreeBSD utiliza ipfw que está portado desde NetBSD). Es posible que su proveedor de servicios tenga un cortafuegos o un router con un cortafuegos delante de su servicio que bloquee estas peticiones. Para saber qué cortafuegos utiliza su proveedor habrá que investigarlo.

iptables Las reglas del cortafuegos se pueden enumerar a través del iptables -nvL (que debe ejecutarse como root, o a través de sudo). el INPUT chain es el conjunto de reglas que se utiliza para permitir/rechazar las conexiones entrantes de su host. Es posible que tenga que añadir una regla para permitir las conexiones SSH entrantes:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from all hosts"

Puede que quieras hacer que sólo permita conexiones desde una IP específica:

iptables -I INPUT -s 10.10.10.10 -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from the 10.10.10.10 host"

Si su proveedor de servicios bloquea el puerto 22, probablemente tendrá que poner el servicio en un puerto diferente (puerto 2222 es bastante popular) a través del Port en su sshd_config (que normalmente se encuentra en /etc/ssh ).

1voto

GOsha Puntos 584

A mí también me pasó. He aquí cómo he diagnosticado y solucionado el problema:

Cuando ejecuté sshd en un puerto diferente (no a través de "service ssh" sino directamente desde /usr/sbin), vi algunas advertencias. Resulta que cambié los permisos de todos los archivos en /etc/ssh a g+w, para poder editarlos como otro usuario en el grupo root. Mal movimiento. sshd es muy particular acerca de esto e ignora los archivos de claves rsa que no son de sólo lectura para cualquiera que no sea root. Revertí el cambio de permisos y pude conectarme de nuevo.

0voto

Fred Puntos 1037

Para estar seguro, tienes #PermitRootLogin yes con o sin el # en su archivo sshd_config? Necesitarías eso para hacer ssh in como root. Y realmente, sugeriría no permitir a root entrar en su servidor por ssh (cambiar la línea a PermitRootLogin no si no está ya configurado así). Obliga a todo el mundo a iniciar sesión como una cuenta normal, entonces su root si necesitan privilegios. De esta forma, puedes ver quién ha entrado y se ha convertido en root y evitas que todo el mundo que no tenga acceso intente adivinar tu contraseña de root.

La clave pública de la máquina del servidor debe estar en known_hosts en la máquina cliente para autenticar el servidor y así saber que no te estás conectando a un servidor falso que se hace pasar por el servidor que quieres. La primera vez que te conectes a un servidor, se te pedirá que apruebes la clave que va en known_hosts . Después, la autenticación del servidor se produce automáticamente.

Pones la clave pública de tu cuenta (del archivo .pub) en authorized_keys en el servidor. Entonces, cuando se conecta al servidor, su cliente codifica un mensaje con la clave privada y lo envía al servidor, que utiliza la clave pública correspondiente del archivo authorized_key para descifrar el mensaje. Si el servidor puede hacerlo, eso demuestra que el cliente tiene la clave privada y, por tanto, está autorizado a conectarse.

Mi lectura de los datos de depuración dice que el servidor no puede encontrar la clave pública de tu cuenta. Yo usaría ssh-copy-id para poner mi clave pública en el servidor.

0voto

Kenster Puntos 2861

Esto podría ser un problema con la clave del host SSH en el servidor remoto. Ver esta pregunta y este hilo de soporte de apple (no te preocupes, no es un problema específico de Apple).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X