lunes, 3 de noviembre de 2025

WEBPROPv2 (XVII). Tareas de manternimiento (II). Clave SSH. Scripts de mantenimiento (copiar ficheros, arrancar servicios etc)

1. Clave ssh

1.1 Creación de una clave ssh para conectarnos al servidor remoto

Primeramente crearemos una carpeta (aunque no esnecesario). Utilizaremsos el tipo ed25519.  

Se le dará el nombre que queramos en este caso "srv01_ssh_key" y opcionalmente se puede añadir un comentario que se añadirá dicho comentario al final en el fichero de la clave pública. El comentario es: "Clave Srv01"


mkdir -p /home/myuser/keys

ssh-keygen -t ed25519 -f /home/myuser/keys/srv01_ssh_key -C "Clave Srv01"

Se creará una clave privada (srv01_ssh_key) y una clave pública (srv01_ssh_key.pub). Hay que tener cuidado de no compartir la clave privada.

Durante el proceso te pide una contraseña, que debes guardar

1.2. Uso de la clave ssh

Cada vez que ejecutemos un comando por ejemplo

ssh -i /home/myuser/keys/srv01_ssh_key usuario@servidor.com

Nos pedirá la contraseña.

Si queremos conservar la contraseña en memoria en cada conexión :

eval "$(ssh-agent -s)"
ssh-add /home/myuser/keys/srv01_ssh_key


1.3. Copiar la clave pública al servidor remoto

Se puede copiar utilizando ssh-copy-id o cat + ssh

# Si se dispone de ssh-copu-id
ssh-copy-id -i /home/myuser/keys/srv01_ssh_key usuario_remoto@IP_REMOTA

#Sinó
cat /home/myuser/keys/srv01_ssh_key | ssh usuario_remoto@IP_REMOTA "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"


1.4. Ejecutar en el servidor remoto

Podemos ejecutar ssh, scp o rsync usando esta clave:

# 1. ssh
ssh -i /home/myuser/keys/srv01_ssh_key usuario_remoto@IP_REMOTA

# 2. scp
scp -i /home/myuser/keys/srv01_ssh_key archivo usuario_remoto@IP_REMOTA:/ruta/

# 3. rsync
rsync -e "ssh -i /home/myuser/keys/srv01_ssh_key" ...

1.5. Configurar ~/.ssh/config con alias y ruta de la clave par acceder al servidor remoto

Así podemos evitar usar la opción -i. Veamos el fichero ~/.ssh/config:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config

# Servidor GLI i ara té la web de l'Ajuntament
Host srv01
    HostName IP_REMOTA
    User usuario_remoto
    IdentityFile /home/myuser/keys/srv01_ssh_key
    IdentitiesOnly yes
    Port 22

Y ahora ejecutando

ssh IP_REMOTA 

nos pediará la contraseña de la clave privada y entramos


2. Script de arrancar servicios remotos

Para rearrancar servicios remotos requiere que el usuario que nos conectamos tenga permisos, para pode hacerlo. Pero nos pide la contraseña de sudo. Para evitar esto modificamos remotamente el fichero "/etc/sudoers.d/restart_services" y añadimos esta línea

usuario_remoto ALL=(ALL) NOPASSWD: /bin/systemctl restart *









No hay comentarios :

Publicar un comentario