
Dans ce tutoriel, je vais vous expliquer comment faire pour vous connecter à un serveur / ordinateur linux en SSH sans mot de passe en utilisant une paire de clés (privé / publique).
Índice
Gere o par de chaves com ssh-keygen
Para gerar um par de chaves, é necessário ter um cliente SSH disponível. É possível fazê-lo no Windows 10 ou Linux.
Neste tutorial, utilizei o meu computador com Windows 10.
Para gerar um par de chaves, digite o comando abaixo:
ssh-keygen -b 4096

-b 4096 permite gerar uma chave de 4096 bits, por defeito é 2048
Primeiro, o gerador pede que indique o ficheiro onde está armazenado, por defeito o nome do ficheiro id_rsa. Para utilizar o valor predefinido, prima Enter.

Em caso de dúvida, verifique primeiro se um par de chaves está presente na pasta user/. ssh do seu computador, pois esta será substituída.
Depois pode introduzir uma palavra-passe para proteger a chave privada, deixe-a em branco para não ter palavra-passe.

Se introduzir uma palavra-passe, esta será solicitada sempre que efetuar login. Num ambiente crítico, aconselho-o a definir uma palavra-passe.
Após validar a password, é gerada a chave:

De seguida, vá à pasta . ssh e apresente o conteúdo, encontramos os ficheiros do nosso par de chaves.

O ficheiro id_rsa é a chave privada, aquela que deve permanecer no seu computador e o ficheiro id_rsa. pub é a chave pública que iremos instalar no(s) servidor(es) SSH para nos ligarmos a este.
Recomendo vivamente que faça um backup do seu par de chaves.
Configurar o servidor SSH
Agora que temos um par de chaves, vamos configurar o nosso servidor SSH para se ligar a ele utilizando um par de chaves.
Na verdade, configuraremos principalmente a nossa chave pública numa conta de utilizador para nos ligarmos sem uma palavra-passe (rdrit).
Obviamente, não o fazemos na conta root…
No servidor Linux, aceda à pasta inicial do utilizador com o qual pretende iniciar sessão.
Verifique se a pasta . ssh está presente (ll).

Se a pasta não existir, crie-a:
mkdir .ssh
Na pasta . ssh, se estiver presente, verifique se o ficheiro authorized_keys existe. Caso contrário, terá de criá-lo:
touch .ssh/authorized_keys
De seguida, edite o ficheiro authorized_keys com o nano, por exemplo, no qual iremos copiar a chave pública.
nano .ssh/authorized_keys
Copie a chave pública que se encontra no ficheiro id_rsa.pub.

Saia do editor e guarde o ficheiro.
A partir de agora, pode ligar o seu computador ao computador Linux via SSH sem palavra-passe.
ssh utilisateur@ip_serveur
Desativar autenticação por palavra-passe no servidor SSH
Este passo é opcional, mas para aumentar o nível de segurança do seu servidor, um ataque de força bruta com uma chave privada de 4096 bits é muito demorado e difícil de executar.
Antes de realizar esta operação, é necessário tomar uma precaução muito importante, com acesso ao computador que não seja por SSH, ou seja, um acesso do tipo KVM para um VPS alugado na Internet ou um acesso às consolas do tipo Hyper-V/VMWare ou para um servidor físico, um acesso físico ou por ILO/Idrac.
No caso de um servidor físico alugado (Scaleway, OVH, etc.), os servidores de nível básico não têm acesso KVM; se perder a sua chave pública ou privada, será impossível recuperar o controlo.
Edite o ficheiro de configuração do servidor SSH
sudo nano /etc/ssh/sshd_config
Procure a directiva PasswordAuthentication, se estiver comentada, descomente-a e defina o valor como no. Se não existir, crie a linha.

Guarde o ficheiro e reinicie o serviço ssh para aplicar a configuração.
sudo systemctl restart sshd
Agora já não é possível fazer login com uma palavra-passe.
Usar sudo sem senha
Na última parte deste tutorial, explicarei como evitar que uma palavra-passe seja solicitada quando se utiliza o sudo.
Esta manipulação aumenta a exposição do seu servidor, especialmente se a sua chave privada for roubada.
Abra o ficheiro /etc/sudoers com o nano.
sudo visudo /etc/sudoers
No final adicione a linha abaixo, adaptando-a ao seu utilizador:
utilisateur ALL=(ALL) NOPASSWD:ALL

Guarde o ficheiro.
Agora pode executar comandos sudo sem solicitar palavra-passe.