Si cambio mi puerto SSH de 22 a 23453, ya no puedo ingresar.
Con más detalle, estoy usando una instancia de Red Hat EC2 en Amazon Web Services. Este es el segundo cambio que tengo en una instalación nueva (el primer cambio fue agregar un usuario no root).
Puedo ssh bien usando Git Bash y un archivo local .ssh / config, edito la línea en / etc / ssh / sshd_config que actualmente dice
#Port 23453
decir
Port 23453
luego reinicie sshd con
sudo service sshd restart
Luego agrego una línea "Puerto 23453" a mi archivo .ssh / config
Host foo
Hostname my-ec2-public-DNS
Port 23453
IdentityFile my ssl key
Si abro otro shell de Git Bash (sin cerrar mi conexión existente) e intento ingresar a mi instancia ssh (con ssh foo), veo el siguiente error:
ssh: connect to host my-ec2-public-DNS port 23453: Bad file number
El grupo de seguridad adjunto a esta instancia tiene dos entradas, ambas TCP
22 (SSH) 0.0.0.0/0
23453 0.0.0.0/0
Mi mejor conjetura es que el puerto todavía está bloqueado por mi firewall.
La salida de sudo iptables -L
es la siguiente
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Lo cual me parece bastante abierto.
ACTUALIZAR
Después de agregar una regla de iptables
iptables -A INPUT -p tcp --dport 23453 -j ACCEPT
e intentándolo de nuevo, todavía no tuve suerte.
Salida de iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:23453
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Que parece suficientemente abierto. No estoy completamente seguro de cómo buscar los paquetes que entran o la actividad en el puerto. Pero la salida de netstat -ntlp
(como root)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:56137 0.0.0.0:* LISTEN 948/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 930/rpcbind
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1012/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1224/master
tcp 0 0 0.0.0.0:23453 0.0.0.0:* LISTEN 32638/sshd
tcp 0 0 :::36139 :::* LISTEN 948/rpc.statd
tcp 0 0 :::111 :::* LISTEN 930/rpcbind
tcp 0 0 ::1:631 :::* LISTEN 1012/cupsd
tcp 0 0 :::23453 :::* LISTEN 32638/sshd
Lo que me parece mostrar sshd en 23453.
He comprobado nuevamente que la instancia tiene el puerto abierto en el grupo de seguridad (Puerto: 23453, Protocolo: tcp, Fuente: 0.0.0.0/0)
¿Qué más puede estar causando la falla de conexión a través de SSH?
Salud
POST MORTEM
Ahora puedo conectarme. Era una regla que faltaba en iptables. La salida de iptables -L
ahora se ve así:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:23453 state NEW
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
fuente
iptables -L
(ssh funciona) y el segundoiptables -L
(ssh está bloqueado). Observe el orden de las reglas en la cadena INPUT (las 6 líneas debajo del primer "objetivo"), se leen de arriba a abajo, por lo que en el segundo conjunto de reglas, "RECHAZAR todo" se golpea antes de "ACEPTAR tcp dpt: 23453 ". El tercer conjunto de reglas tiene la entrada ACEPTAR anterior y, por lo tanto, antes, la entrada RECHAZAR.Respuestas:
Su firewall de instancia no tiene este puerto abierto. Pruebe el siguiente comando:
Tenga en cuenta que las reglas de iptables deben guardarse para persistir después de un reinicio. En RHEL eso es:
fuente
/sbin/service iptables save
no funciona para mí, incluso con sudo.Agregar una regla de iptables
que acepta el tráfico de cualquier host, por el puerto 23435, e intenta ssh, si ve algún paquete o actividad, significa que los paquetes están llegando a su servidor.
Si no ve ningún paquete, eso significa que el grupo de seguridad de AWS no tiene una regla para permitir su puerto.
pero si ve tráfico en esta regla (by
iptables -nvL
), debe ejecutar "netstat -ntlp" y verificar si el demonio SSH se está ejecutando en el puerto 2435. y en adelante0.0.0.0/0
.Esperemos que estos pasos resuelvan el problema. si todavía no, entonces dime.
fuente
¿Estás seguro de que el grupo de seguridad está configurado correctamente? ¿Hiciste clic en "Aplicar cambios"? Muchas personas se olvidan de aplicar sus cambios :)
"Número de archivo incorrecto" generalmente significa tiempos de espera de conexión, y su configuración de iptables parece correcta.
fuente
En caso de que alguien tropiece con este tema porque cambiaron el puerto predeterminado de ssh, aquí hay una solución que funcionó para mí:
/etc/ssh/sshd_conf
.fuente