¿Por qué recibo el error "puerto 22: conexión rechazada"?

70

Estoy obteniendo un

port 22: Connection refused 

error al conectarse a un servidor.

Tengo instalados el servidor y el cliente openssh, y se están ejecutando. Pero aún hay un error. Por favor ayuda.

ankesh
fuente
2
Solo para aclarar, ¿el servidor openssh está instalado en el servidor?
Kevin
Compruebe que ssh se está ejecutando en el puerto 22 y si tiene una regla de firewall que bloquea el puerto.
Manula Waidyanatha
1
Según yo, configure el firewall de manera que permita ssh (puerto 22) que actualmente está bloqueado por el firewall.
Ketan Patel
Esto podría ocurrir probablemente debido a la pérdida temporal de la red también. Así que revisa tu conexión a internet.
user648610

Respuestas:

78

Revisé este problema y finalmente obtuve la respuesta adecuada.

sudo apt-get update
sudo apt-get install openssh-server
sudo ufw allow 22

Luego entró raspi-configen una ventana de terminal y habilitó ssh.

Esto permitirá que el puerto 22 se use para sshd.

Doogle
fuente
El mismo problema aquí que @SDsolar
Nadav B
@Nadiv, también tuve que usar raspi-config para habilitar ssh. La respuesta ha sido editada para reflejar esto.
SDsolar
Realizó las primeras tres líneas en ambas computadoras y el archivo ahora se transfirió con éxito. ¿Por qué Ubuntu no viene con estos instalados / habilitados por defecto? El connection refusederror es tan críptico que no tenía idea de si era un problema de firewall, un problema de nombre de usuario, un problema de dirección IP, etc. Muy frustrante.
Hatefiend
sudo ufw allow 22Trabajó una vez. De nuevo, el error comenzó a aparecer.
vineeshvs
32

Mientras esté en el servidor, verifique para asegurarse de que sshd se esté ejecutando y escuche en el puerto 22:

$ sudo netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1538/sshd       
tcp6       0      0 :::22                   :::*                    LISTEN      1538/sshd       

Si no obtiene resultados, o no muestran que está escuchando en tcp 0.0.0.0:22 ... arregle eso.

Si SÍ muestra que sshd se está ejecutando y está escuchando en el puerto tcp 22, verifique que no haya ninguna regla de firewall que se interponga en el camino. De nuevo, en el servidor:

$ sudo iptables -L | grep ssh
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh 

O alternativamente

$ sudo ufw verbose
Status: active

To                         Action      From
--                         ------      ----
22                         DENY        Anywhere
22/tcp                     DENY        Anywhere

Si ve una regla como una de las anteriores, deberá corregirla.

Si no ve ninguna regla de firewall en el camino y ve que el servicio se está ejecutando en el servidor, entonces es hora de verificar su estación de trabajo y la red a la que está conectada. ¿Puedes conectarte a otros servidores? ¿Puedes hacer ping a tu propia interfaz o dirección de bucle invertido? Etc.

Jim Salter
fuente
1
y si puedes conectarte a otros servidores?
opensourcechris
2
Hola, gracias por responder, el mío no es el puerto 22, es 2222. Dijiste, arregla eso, pero ¿cómo?
Yogesh Darji
La mía no dio resultados.
SDsolar
arreglarlo con: sudo ufw allow 22(o sea cual sea su puerto)
John D
netstat está en desuso (y no está instalado de forma predeterminada en las versiones más nuevas de Ubuntu: el comando 'netstat' no se encuentra, pero se puede instalar con ... ). ¿Quizás actualizar para iproute2 ?
Peter Mortensen
14

Prueba esto

sudo apt-get remove openssh-client openssh-server

y entonces

sudo apt-get install openssh-client openssh-server

funcionó para mí :)

Probablemente no sea la solución más ortodoxa ... :)

PJunior
fuente
3
Usar dpkg-reconfigure sería posiblemente más fácil de usar en lugar de una solución de desinstalación / reinstalación
Stephen Michael Kellat
1
Tuve que usar apt-get purge openssh-server (en lugar de eliminar) para que funcione.
11101101b
6

Encontré el mismo problema después de instalar Raspbian. Solución que funcionó para mí:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server
Wouter
fuente
Si esto funcionó, debe haber cambiado su sshd-config antes.
guntbert
Edité sshd_config en Raspbian mientras intentaba configurar ssh. Esta solución funcionó para mí.
Scott
+1. ¡La única solución que funcionó!
Nadav B
1

Los siguientes comandos me funcionaron:

cd /root/.ssh
vi known_hosts

Ahora borre todo en ese archivo e ingrese en la terminal:

service sshd restart

Fuente: SSH - Conexión rechazada

Sruthil Lal SB
fuente
problema similar para mí, pero borré mis conocidos_hosts ssh-keygen -f "/home/MYUSER/.ssh/known_hosts" -R MYHOST, sustituyendo mi usuario de Linux y mi host remoto al que intentaba conectarme
Chris
1

Esto podría solucionarlo también para usted. Intente la conexión de reenvío de puerto 22 desde su dirección IP saliente a su IP local en el mismo puerto. Funcionó para mí permitiéndome ingresar a una computadora remota ubuntu.

jackw11111
fuente
0

La IP estática estaba mal en mi caso. Lo descubrí haciendo ping <my_ip>después del cambio del servidor. Seguía haciendo ping incluso cuando el servidor estaba apagado. Cambiar la IP resolvió el problema.

vineeshvs
fuente