Cambié mi puerto SSH predeterminado en mi servidor doméstico (en el /etc/ssh/sshd_config
archivo) al puerto 54747, luego reinicié los servicios ssh
y sshd
(nunca estoy seguro de cuál, así que hice ambos para estar seguro). Para probar mi configuración, me desconecté y luego volví a ingresar sin ningún problema.
Un par de días después, instalé actualizaciones aptas y luego reinicié mi servidor. Cuando intenté volver a SSH (en el puerto 54747), recibí un error de conexión rechazada.
Por alguna razón, intenté SSH en el puerto predeterminado, ¡y funcionó! Regresé para verificar el sshd_config, pero aún tenía el puerto personalizado. Así que reinicié los servicios ssh
y sshd
, y volvió al comportamiento "normal" (ssh en el puerto 54747). Intenté reiniciar nuevamente, y la conexión se negó nuevamente ...
Alguien sabe lo que hice mal?
Detalles extra:
- Ubuntu 16.04.2 LTS
- El servidor también utiliza un HTPC, con una sesión abierta (mismo usuario que SSH) en mi televisor
- I SSH usando la clave RSA de mi computadora portátil, y he deshabilitado la autenticación de contraseña
- Solía reiniciar con
sudo reboot -h now
, pero después de buscar, descubrí que algunas personas lo desaconsejaban, así que lo intentésudo reboot
, pero no hubo diferencias.
EDITAR Secuencia de eventos:
- Cambie el puerto SSH de 22 a 54747 en
/etc/ssh/sshd_config
- Reinicie los servicios ssh y sshd
- Finalizar sesión SSH actual
- SSH vuelve a entrar con éxito en el puerto 54747
- Reiniciar
- Error de conexión SSH en el puerto 54747, pero exitoso en el puerto 22
- Reinicie los servicios ssh y sshd
- SSH nuevamente en el puerto 54747, error de conexión en el puerto 22
- Reiniciar y volver a 6
EDITAR 1: netstat
salida
rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
EDITAR 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
EDITAR 3: lsof -i | grep ssh
systemd 1 root 46u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd 1 root 49u IPv6 14641 0t0 TCP *:ssh (LISTEN)
sshd 4088 root 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4088 root 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
Como referencia, ATLAS es el nombre de host del servidor remoto, 192.168.1.27 es la IP de LAN de mi computadora portátil y el comando se ejecutó entre los pasos 6 y 7
ufw status
Status: inactive
EDITAR 4: ps -ef |grep sshd
root 4088 1 0 22:40 ? 00:00:00 sshd: rgo [priv]
rgo 4202 4088 0 22:40 ? 00:00:00 sshd: rgo@pts/1 sshd
fuente
Port 10285
. Google muestra algunos resultados para 54747 ... (3) También el servidor SSH puede trabajar con varios puertos simultáneamente. Cree dos directivas separadas para cada puerto:Port 22
yPort 54747
luego abra solo la segunda en el firewall. (4) Puede probar laMatch LocalPort
directiva , colocada al comienzo desshd_c
.Respuestas:
ssh puede ser "activado por socket" por systemd dependiendo de la configuración, lo que significa que inicialmente es systemd el que configura el puerto de escucha, y sshd solo se inicia cuando un cliente se conecta por primera vez. Esto es para acelerar el tiempo de inicio: los demonios de servicio solo se inician a pedido.
Sin embargo, esto significa que también debe configurar systemd en el puerto correspondiente. Encontrará la configuración del sistema en la
/lib/systemd/system/ssh.socket
que se enumeranListenStream=22
. Para anular esto, cree un archivo/etc/systemd/system/ssh.socket.d/port.conf
(creando el directoriossh.socket.d
si es necesario) que contenga:Cambie el número al puerto deseado. La primera entrada en blanco borra el valor predeterminado anterior, y la entrada posterior agrega la nueva. Esto anula el valor predeterminado enviado
/lib/systemd/system/ssh.socket
y debe realizarse además del cambio/etc/ssh/sshd_config
.Luego, ejecute
sudo systemctl daemon-reload
para informarle a systemd sobre sus cambios ysudo systemctl reload ssh
si su demonio ssh se estaba ejecutando anteriormente.fuente
/etc/systemd/system/ssh.socket.d/port.conf
se ignora y el reinicio aún restablece el puerto a 22. ¿Es relevante el nombre del archivo ? No se puede encontrar buena documentación sobre las anulaciones de systemd en Ubuntu ..conf
. Consulte systemd-system.conf (5) para obtener detalles sobre los archivos de configuración de anulación de systemd.systemctl status ssh.socket
para ver si está habilitado y qué está escuchando.ListenStream=
línea antes del puerto personalizado evitó esto, no estoy seguro de por qué. ¿Tal vez esto "borra" laListenStream=22
configuración predeterminada/lib/systemd/system/ssh.socket
? Una forma extraña de anular la configuración. ¿Quizás valga la pena agregar esto a la respuesta?Verifique la configuración de su puerto en el
/etc/ssh/sshd_config
archivo. Asegúrese de editar como sudo o un usuario en el grupo sudo. Todo lo que tiene que hacer para configurar el puerto es, en un tipo de líneaPort 54747.
Ahora, reinicie el servicio ssh ejecutandoservice sshd restart.
Luego verifique que ssh esté escuchando en ese puerto ejecutandosudo netstat -lntp | grep ssh.
Reiniciar y probar.También verifique la configuración de su red. Si está en una red corporativa, asegúrese de estar en la vlan correcta.
fuente
Port 22
línea predeterminada aPort 54747
solo. Además, el netstat que me diste no tenía salida.ssh -i key.txt user@ipaddress -p 54747
. Compruebe también si hay algo más escuchando en ese puerto. Hacersudo lsof -i | grep ssh
. También puede verificar su firewall para asegurarse de que no esté bloqueando nada. Hacer:sudo ufw status
.shutdown -r now
. Pruébalo y dinos los resultados. Consulte este artículo como referencia: askubuntu.com/questions/483670/…sudo reboot -h now
o `sudo reboot``A veces las cosas simplemente salen mal. Si estuviera en tu lugar, lo intentaría con:
fuente
cp
el comando es solo por si acaso, generalmente el proceso de reinstalación no toca los archivos de configuración.ssh es el proceso del cliente que arbitra y mantiene una conexión de sesión de usuario con el servidor ssh. sshd es el demonio que se ejecuta en el servidor ssh para escuchar y autenticar las solicitudes de conexión ssh.
El archivo de configuración en el servidor sshd que se lee al iniciar el servicio sshd (que requiere privilegios de sudo para editar) es
El servicio debe comenzar desde
Para reiniciar sshd, lo que implicaría volver a leer el archivo sshd_config
Para ver qué puerto está escuchando el demonio sshd, así como otra información útil, sobre el tipo de servidor ssh
Realice estos pasos en el orden especificado:
Reinicia el servidor ssh
Abra una sesión de terminal en el servidor ssh (no una conexión ssh en él)
Tipo
hostname
Si hostname no devuelve el nombre del servidor ssh (Atlas en este caso), vuelva a realizar el paso anterior correctamente.
grep Port /etc/ssh/sshd_config
- Anote el número de puerto. Debería ser el que especificósudo service sshd status
Si el estado informa que está activo, ejecutándose y escuchando en el puerto personalizado que especificó, entonces está bien en ese aspecto. De lo contrario, el inicio del servicio puede no estar llamando al archivo sshd_config que modificó, sino a otro archivo de configuración que contiene información predeterminada. Si el servicio no se inició (dice que está inactivo y no está activo y ejecutándose, entonces este es un problema diferente al que usted solicitó.
Es probable que estos pasos identifiquen la causa raíz del problema sobre el que está preguntando.
Para fines de prueba y para simplificar: en el lado del cliente, desde una sesión de terminal, ssh en el servidor ssh de la siguiente manera
Según los comentarios de OP, sospecho que sshd no se inicia en el arranque, pero se inicia correctamente cuando se invoca manualmente. Es posible que las conexiones ssh exitosas a través del puerto 22 NO se estén conectando al servidor ssh sino a otra cosa (por ejemplo, localhost). Para probar o desacreditar esto, después de conectarse a través de tipo ssh
Según lo que dice OP, supongo que el nombre de host no será el atlas del servidor ssh.
Para aislar aún más esto, después de reiniciar el servidor ssh pero antes de hacer nada más , desde una sesión de terminal en el tipo de servidor ssh (Atlas)
Si esto falla, como debería, entonces
Si esto tampoco funciona, eso confirmará los resultados obtenidos al ejecutar
fuente
ssh -p <PORT> <USER>@<IP>
, con mi clave privada agregada al agente.Probablemente haya respondido Y cuando apt detectó diferencias entre su sshd_config y la del paquete. Le pregunta si desea instalar la versión del paquete mantainer o conservar la suya.
fuente
Posibles causas en las que puedo pensar
/usr/lib/systemd/system/sshd.socket
aparentemente a través del archivo : https://www.vultr.com/docs/how-to-change-ssh-port-on-coreosfuente
find /etc/ -iname "*ssh*"
para buscar más pistas.