O uso de chaves privadas é padrão em usuários Linux de ambientes em nuvem como o Amazon Web Services, esse procedimento permite que seja criado novos usuários também utilizando chaves privadas.
Utilize um programa como o PuTTY Key Generator (puttygen) para gerar a chave privada e exibir a chave pública na tela, lembrando que o tipo da chave deve ser RSA ou ED25519, a vantagem do ED25519 é que não é preciso determinar a complexidade da chave.
Para criar o usuário no Linux, execute:
sudo adduser <nomedousuário> --disabled-password
sudo su - <nomedousuário>
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
Para colocar a chave pública no Linux, execute:
cat >> .ssh/authorized_keys
Você pode colar a chave pública na linha disponível logo após executar o comando, pressionar ENTER, e em seguida ctrl+D para retornar ao prompt de comando.
Você pode retornar sempre que precisar ao novo usuário utilizando o comando a seguir:
sudo su - <nomedousuário>
Para adicionar o novo usuário em grupos, execute o seguinte comando:
sudo usermod -a -G <nomedogrupo> <nomedousuário>
Caso queira consultar os grupos de um determinado usuário, acesse ele e execute "id", ou utilizando qualquer usuário com permissão sudo o comando abaixo:
sudo groups <nomedousuário>
Se tudo for seguido conforme indicado, o novo usuário está diponível para uso.
Comando de linha única para adicionar usuário com permissão para root, sem senha e com chave privada:
USERNAME=<nomedousuário> && 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 linha única para atualizar usuário existente sem senha e sobreescrevendo com nova chave privada:
USERNAME=<nomedousuário> && 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 linha única para atualizar usuário existente sem senha e adicionando mais uma chave privada:
USERNAME=<nomedousuário> && 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 linha única para remover usuário:
USERNAME=<nomedousuário> && sudo deluser --remove-home $USERNAME && \ sudo rm -f /etc/sudoers.d/$USERNAME $$ sudo rm -rf /home/$USERNAME