Cambié mi puerto SSH predeterminado en mi servidor doméstico (en el /etc/ssh/sshd_config
archivo) al puerto 54747, luego reinicie el ssh
y sshd
servicios (nunca estoy seguro de cuál, así que hice ambos solo para estar seguro). Para probar mi configuración, me desconecté y luego volví a iniciar sesión sin ningún problema.
Un par de días después, instalé actualizaciones de apt y luego reinicié mi servidor. Cuando intenté volver a ingresar SSH (en el puerto 54747), recibí un error de conexión rechazada.
Por alguna razón, intenté SSH en el puerto predeterminado, ¡y funcionó! Volví a comprobar el sshd_config, pero todavía tenía el puerto personalizado. Así que reinicié el ssh
y sshd
servicios, y volvió al comportamiento "regular" (ssh en el puerto 54747). Intenté reiniciar de nuevo y la conexión volvió a rechazarse...
Alguien sabe que hice mal?
Detalles adicionales:
- Ubuntu 16.04.2 LTS
- El servidor también se usa como HTPC, con una sesión abierta (el mismo usuario que SSH) en mi TV
- Usé SSH con la clave RSA de mi computadora portátil y deshabilité 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 probésudo reboot
, pero sin diferencias
EDITAR
Secuencia de eventos:
- Cambie el puerto SSH de 22 a 54747 en
/etc/ssh/sshd_config
- Reiniciar los servicios ssh y sshd
- Finalizar la sesión SSH actual
- SSH volvió a ingresar con éxito en el puerto 54747
- Reiniciar
- Error de conexión SSH en el puerto 54747, pero exitosa en el puerto 22
- Reiniciar los servicios ssh y sshd
- SSH volvió a ingresar correctamente en el puerto 54747, error de conexión en el puerto 22
- Reiniciar y volver a 6
EDICIÓN 1: netstat
salida
[email protected]:~$ sudo netstat -lntp | grep :54747
[email protected]:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
EDICIÓN 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
EDICIÓN 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
EDICIÓN 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: [email protected]/1 sshd
Respuesta aceptada:
ssh puede ser "activado por socket" por systemd según 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 bajo demanda.
Relacionado:¿Cómo grabar la pantalla en Ubuntu?
Sin embargo, esto significa que también debe configurar systemd en el puerto correspondiente. Encontrará la configuración del sistema en /lib/systemd/system/ssh.socket
que enumera ListenStream=22
. Para anular esto, cree un archivo /etc/systemd/system/ssh.socket.d/port.conf
(creando el directorio ssh.socket.d
si es necesario) que contiene:
[Socket]
ListenStream=
ListenStream=54747
Cambie el número al puerto deseado. La primera entrada en blanco borra el valor predeterminado anterior y la entrada posterior agrega el nuevo. Esto anula el envío predeterminado en /lib/systemd/system/ssh.socket
y debe hacerse además de cambiando /etc/ssh/sshd_config
.
Luego ejecute sudo systemctl daemon-reload
para informar a systemd sobre sus cambios, y sudo systemctl reload ssh
si su demonio ssh se estaba ejecutando anteriormente.