Ubuntu / Cambiar el puerto SSH, limitar el acceso root y comprobar NetworkManager
La configuración de puerto y autenticación SSH de Ubuntu debe cambiarse después de verificar primero la configuración del servicio y del socket reales. Esta nota resume el cambio de puerto, el acceso root excepcional y las condiciones de uso de nmtui, asumiendo como base las cuentas de administrador generales, la autenticación con clave pública y la consola de recuperación. Se pueden consultar las condiciones y procedimientos relacionados en Configurar servidor OpenSSH y autenticación con clave en Ubuntu.
Elementos a verificar antes del cambio
cat /etc/os-release
systemctl status ssh.socket ssh.service --no-pager
sudo ss -lntp
sudo sshd -T | grep -E "^(port|listenaddress|permitrootlogin|passwordauthentication|authenticationmethods) "
Mantenga la conexión SSH existente y verifique el acceso a la consola. Haga una copia de seguridad de /etc/ssh/sshd_config y de los archivos include, ya que OpenSSH utiliza primero los valores que encuentra en muchas configuraciones. Si existe algún Match, también verifique los resultados de sshd -T -C con el usuario y la dirección reales. Cambiar solo el puerto no sustituye la autenticación fuerte ni las restricciones de acceso.
Ejemplo de cambio del puerto SSH a 1980
1980 es solo un ejemplo. Elija un puerto realmente no usado y permita primero las nuevas conexiones del origen de administración en UFW o firewall de la nube que esté aplicando. Si se usa UFW, cambie la IP de administración del ejemplo por el valor real. 192.0.2.10 es una dirección para documentación. Se pueden consultar las condiciones y procedimientos relacionados en Restringir puertos de administración y servicio con UFW.
sudo ufw allow from 192.0.2.10 to any port 1980 proto tcp
Cambie el puerto en la configuración SSH que se aplicará realmente y verifique la sintaxis. No agregue ciegamente el mismo valor al archivo de configuración; primero revise la prioridad de include y Match existentes.
Port 1980
sudo sshd -t
Si ssh.socket está activo, reiniciar únicamente el servicio puede no actualizar el puerto. Compruebe la configuración efectiva del socket y los ajustes generados en su versión de Ubuntu. Para definir explícitamente su escucha, puede crear el siguiente archivo de configuración complementario (drop-in) mediante sudo systemctl edit ssh.socket. La asignación vacía ListenStream= elimina la lista heredada; la línea siguiente establece el nuevo puerto. Si la configuración actual limita la escucha a una IP concreta, conserve esa restricción en lugar de copiar un puerto sin dirección.
[Socket]
ListenStream=
ListenStream=1980
Solo aplíquelo a continuación si ha verificado el modo de socket. En configuraciones que solo usan el servicio, no encienda un socket nuevo; en su lugar, vuelva a leer o reinicie la configuración del ssh.service en ejecución después de verificar.
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket ssh.service
sudo ss -lntp
Pruebe una nueva conexión desde un cliente separado con ssh -p 1980 usuario@servidor. No retire la regla del puerto anterior ni cierre la sesión actual hasta que haya verificado que el listener real, el nuevo inicio de sesión y sudo funcionan correctamente. Si falla, restaure solo la configuración de SSH y el drop-in a su estado de respaldo desde la consola, aplíquela y recupere la conexión al puerto existente primero.
Puede consultar los archivos de configuración y los procedimientos de verificación en la guía oficial de Ubuntu OpenSSH.
Restringir el acceso directo del root a condiciones excepcionales.
Es adecuado como ruta de administración básica iniciar sesión con una cuenta normal y ejecutar solo los comandos necesarios con sudo. Si el acceso directo de root es absolutamente necesario, prepare una clave pública y verifique la política de root que se aplicará realmente.
PermitRootLogin prohibit-password
PubkeyAuthentication yes
AuthenticationMethods publickey
Estas opciones no deben sobrescribir indiscriminadamente la política de autenticación existente. Si la excepción se aplica solo a root, intégrela en la estructura Match correspondiente y conserve los requisitos de los demás administradores. prohibit-password desactiva la contraseña y la autenticación interactiva de teclado para root, pero por sí solo no exige exclusivamente el método publickey; para eso debe comprobar también AuthenticationMethods. El estado de la cuenta, los permisos de sus claves y la política de PAM (Pluggable Authentication Modules) pueden imponer restricciones adicionales.
PermitRootLogin yes no es un interruptor único que garantice la conexión mediante contraseña. Se aplican conjuntamente la autenticación por contraseña, el bloqueo de cuentas, PAM y otras condiciones, por lo que no abra la conexión por contraseña de root como solución general. Después de los cambios, verifique con sshd -t, las condiciones reales con sshd -T -C, la conexión con nuevas claves y sudo, y una vez terminado, vuelva a PermitRootLogin no.
Verifique primero qué servicio administra la red antes de usar nmtui
systemctl is-active NetworkManager systemd-networkd
sudo netplan get
command -v nmtui
nmtui es una herramienta para editar perfiles de conexión de NetworkManager. Si es necesario, puede verificar si está proporcionada por el paquete network-manager, pero solo con la instalación del paquete no se garantiza la conversión segura de la configuración existente de Netplan o systemd-networkd. No permita que dos administradores manejen la misma interfaz al mismo tiempo en un servidor remoto, y decida el método de gestión después de confirmar el renderer real y la ruta de recuperación de consola. Puede verificar las condiciones y procedimientos relacionados en Diferenciando Netplan, NetworkManager y systemd-networkd.




