El uso de claves privadas es estándar en usuarios Linux de entornos en la nube como Amazon Web Services, este procedimiento permite crear nuevos usuarios también utilizando claves privadas.
Utilice un programa como el PuTTY Key Generator (puttygen) para generar la clave privada y mostrar la clave pública en pantalla, recordando que el tipo de clave debe ser RSA o ED25519, la ventaja del ED25519 es que no es necesario determinar la complejidad de la clave.
Para crear el usuario en Linux, ejecute:
sudo adduser <nombredeusuario> --disabled-password
sudo su - <nombredeusuario>
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
Para colocar la clave pública en Linux, ejecute:
cat >> .ssh/authorized_keys
Puede pegar la clave pública en la línea disponible justo después de ejecutar el comando, presionar ENTER, y luego ctrl+D para regresar al prompt de comandos.
Puede volver cuando lo necesite al nuevo usuario utilizando el siguiente comando:
sudo su - <nombredeusuario>
Para agregar el nuevo usuario a grupos, ejecute el siguiente comando:
sudo usermod -a -G <nombredegrupo> <nombredeusuario>
Si desea consultar los grupos de un usuario determinado, acceda con él y ejecute "id", o utilizando cualquier usuario con permiso sudo el siguiente comando:
sudo groups <nombredeusuario>
Si todo se sigue según lo indicado, el nuevo usuario está disponible para su uso.
Comando de línea única para agregar usuario con permiso de root, sin contraseña y con clave privada:
USERNAME=<nombredeusuario> && PUBKEY='ssh-rsa PUBKEYHASH' && \ sudo adduser --disabled-password --gecos "" "$USERNAME" && \ sudo usermod -aG sudo "$USERNAME" && \ sudo mkdir -p /home/$USERNAME/.ssh && \ echo "$PUBKEY" | sudo tee /home/$USERNAME/.ssh/authorized_keys > /dev/null && \ sudo chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh && \ sudo chmod 700 /home/$USERNAME/.ssh && \ sudo chmod 600 /home/$USERNAME/.ssh/authorized_keys && \ echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$USERNAME > /dev/null && \ sudo chmod 440 /etc/sudoers.d/$USERNAME
Comando de línea única para agregar usuario sin permiso de root, sin contraseña y con clave privada:
USERNAME=<nombredeusuario> && PUBKEY='ssh-rsa PUBKEYHASH' && \ sudo adduser --disabled-password --gecos "" "$USERNAME" && \ sudo mkdir -p /home/$USERNAME/.ssh && \ echo "$PUBKEY" | sudo tee /home/$USERNAME/.ssh/authorized_keys > /dev/null && \ sudo chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh && \ sudo chmod 700 /home/$USERNAME/.ssh && \ sudo chmod 600 /home/$USERNAME/.ssh/authorized_keys
Comando de línea única para actualizar usuario existente sin contraseña y sobrescribiendo con nueva clave privada:
USERNAME=<nombredeusuario> && PUBKEY='ssh-rsa PUBKEYHASH' && \ sudo mkdir -p /home/$USERNAME/.ssh && \ echo "$PUBKEY" | sudo tee /home/$USERNAME/.ssh/authorized_keys > /dev/null && \ sudo chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh && \ sudo chmod 700 /home/$USERNAME/.ssh && \ sudo chmod 600 /home/$USERNAME/.ssh/authorized_keys
Comando de línea única para actualizar usuario existente sin contraseña y agregando otra clave privada:
USERNAME=<nombredeusuario> && PUBKEY='ssh-rsa PUBKEYHASH' && \ sudo mkdir -p /home/$USERNAME/.ssh && \ echo "$PUBKEY" | sudo tee -a /home/$USERNAME/.ssh/authorized_keys > /dev/null && \ sudo chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh && \ sudo chmod 700 /home/$USERNAME/.ssh && \ sudo chmod 600 /home/$USERNAME/.ssh/authorized_keys
Comando de línea única para eliminar usuario:
USERNAME=<nombredeusuario> && sudo deluser --remove-home $USERNAME && \ sudo rm -f /etc/sudoers.d/$USERNAME $$ sudo rm -rf /home/$USERNAME