Acaba de modificar /etc/ssh/sshd_config, una regla sudo o la configuración de red. Si el servicio se niega a iniciarse luego, encontrar la línea cambiada puede llevar más tiempo que la modificación misma. Etckeeper mantiene el historial de /etc en un repositorio Git local para que puedas revisar un diff antes de retroceder.

El principio es simple: lee el estado del repositorio, guarda una versión limpia, haz una modificación limitada y luego compara. Este método es adecuado para Debian y Ubuntu, siempre que se trate /etc como una zona sensible.
Controlar el repositorio antes de la primera copia de seguridad
Instala Etckeeper desde los repositorios de tu distribución. En Debian o Ubuntu, se basa en Git y crea un repositorio local en /etc.
sudo apt update
sudo apt install etckeeper git
sudo etckeeper init
sudo git -C /etc status
El último comando debe indicar un repositorio Git y señalar los archivos modificados o no rastreados. Detente aquí si descubres un archivo de contraseña, una clave privada o un secreto de aplicación que no debe guardarse en Git.
- Verifica que solo
rootpueda leer el repositorio y sus archivos. - Revisa los archivos no rastreados antes del primer commit.
- Mantén el repositorio local hasta que una política de secretos y una auditoría permitan un repositorio remoto.
Yo mantendría este repositorio local en un servidor ordinario. Un historial útil no justifica el envío automático de archivos de configuración a una plataforma externa.
Crear un punto de comparación antes de la modificación
Antes de hacer ajustes a un servicio, verifica el estado y crea un commit legible. Etckeeper puede hacer commits automáticos alrededor de las operaciones de gestión de paquetes, pero un commit manual sigue siendo preferible antes de una intervención específica.
sudo git -C /etc status
sudo etckeeper commit "Estado antes de la modificación SSH"
sudo git -C /etc log --oneline -5
El registro debe contener tu punto de partida. Este paso proporciona un marcador preciso si necesitas explicar un cambio o restaurar un solo archivo.
Revisar la diferencia antes de reiniciar el servicio
Primero haz una modificación de laboratorio, por ejemplo, en un archivo de prueba bajo /etc. En producción, mantiene una segunda sesión SSH abierta antes de modificar una configuración de red u OpenSSH.
sudo editor /etc/ejemplo-etckeeper.conf
sudo git -C /etc diff -- ejemplo-etckeeper.conf
sudo etckeeper commit "Adición del archivo de prueba"
sudo git -C /etc show --stat HEAD
git diff muestra las líneas modificadas antes del commit. Después del commit, git show muestra la versión registrada. Para una configuración que controla un demonio, valida también su sintaxis con el comando específico del servicio antes de reiniciar.
Restaurar un archivo con un commit identificado
Un mal cambio no obliga a restaurar todo /etc. Enumera los commits, elige el que precede el error y luego recupera solo el archivo afectado en un directorio temporal para revisarlo.
sudo git -C /etc log --oneline -- ssh/sshd_config
sudo git -C /etc show HEAD~1:ssh/sshd_config > /tmp/sshd_config.antiguo
sudo diff -u /etc/ssh/sshd_config /tmp/sshd_config.antiguo
Luego copia la versión validada a /etc/ssh/sshd_config solo después de la revisión y el control de sintaxis. Una restauración rápida se vuelve peligrosa si sobrescribe otra corrección que haya ocurrido entre tanto.
Etckeeper no reemplaza una copia de seguridad del sistema
Etckeeper rastrea archivos de texto y sus metadatos de Git, no tus datos de aplicación, tus volúmenes o la capacidad de reiniciar una máquina. Mantén una copia de seguridad restaurable separada para el sistema y los datos.
Para controlar una modificación mientras un servicio escribe en sus archivos, inotifywait permite observar la escritura real. Si el problema aparece después de un reinicio, los registros del último reinicio con journalctl ayudarán a identificar el servicio afectado.
El límite sigue siendo claro: Etckeeper ayuda a probar una diferencia en /etc. No hace que una modificación sea segura y nunca debe enviar secretos a un repositorio remoto sin auditoría.