Como Configurar SSH Sem Senha no Linux
SSH significa Secure Shell. É um protocolo de internet de código aberto que pode ser utilizado para acessar servidores e executar comandos remotamente, o que é perfeito para usuários de VPS! O SCP (Secure Copy Protocol), que é baseado no SSH, pode ser usado para copiar arquivos de um computador para outro. Neste tutorial vamos ensinar como configurar uma conexão SSH sem senha no Linux.
Existem duas maneiras de habilitar o SSH:
- Autenticação por senha.
- Autenticação por chave pública.
A autenticação por chave pública também é conhecida como acesso ao SSH sem senha.
Conteúdo
Por Que Usar SSH Sem Senha?
Muitos usuários consideram o método de proteção por senha difícil de lembrar e desconfortável, principalmente se você precisa acessar muitas vezes diariamente.
Algumas das vantagens da conexão SSH sem senha são:
- Login fácil e sem necessidade de interação. Usuários não precisam digitar senha para novas sessões.
- Mais seguro quando comparado ao método de senha, uma vez que utiliza criptografia de chave pública.
- Mais confiável.
- Facilita o gerenciamento de autenticação e autorização.
- Boa solução para infra estruturas pequenas ou grandes.
- Fácil de configurar.
Para começar a usar o SSH sem senha é preciso gerar uma chave pública. Neste tutorial vamos focar na versão 2 do SSH, que é a mais recente e mais segura.
Acesse seu servidor VPS via SSH e vamos começar!
Primeiro, verifique se a chave SSH para a máquina cliente já existe. Isto irá prevenir que a configuração atual seja sobrescrita, caso haja uma. Utilize o seguinte comando:
ls -al ~/.ssh/id_*.pub
Se houver uma chave existente, você tem as opções de pular os passos de geração de uma chave SSH, sobrescrever as configurações atuais ou criar um backup da chave existente. Se a chave não existir, você vai ver o seguinte resultado:
ls: cannot access /users/appsadm/.ssh/id_*.pub: No such file or directory
Em seguida, vamos prosseguir com a geração da chave SSH.
SSH Sem Senha no Ubuntu e CentOS:
Para gerar uma chave pública no Ubuntu ou CentOS, utilize o comando:
ssh-keygen -t rsa
A opção -t significa type, e RSA é o protocolo utilizado na geração da chave. O RSA é o padrão – mas você também pode usar a versão mais simples do comando – ssh-keygen.
A chave padrão é de 2048 bits. Mas se você quer mais segurança basta trocar o valor para 4096 bits. Neste caso o comando será:
ssh-keygen -t rsa -b 4096
Este processo de geração de chave é interativo e você terá que responder algumas perguntas, como:
- Confirme o arquivo em que a chave será salva (/home/.ssh.id_rsa).
- Insira a palavra-chave (deixe em branco caso não haja uma).
Você pode pressionar enter em ambas as perguntas para definir o valor padrão. A palavra-chave é utilizada para criptografar a chave privada, mas não é obrigatória e pode ser deixada em branco. A chave privada será salva na localização padrão – .ssh/id_rsa.
A chave pública será salva no arquivo .ssh/id_rsa.pub. Isto completa o processo de geração de chave. Você pode verificar os arquivos com a ajuda de qualquer editor.
Copiar a Chave Pública Para Habilitar a Conexão SSH Sem Senha
Copiar a chave pública para a máquina destino pode ser feito de três maneiras:
- Utilizar o comando ssh-copy-id.
- Copiar utilizando o SSH.
- Copiar manualmente.
A primeira opção é a mais popular e mais rápida. O comando ssh-copy-id é incluso na maioria dos sistemas Linux por padrão. Porém, em alguns casos em que não for possível utilizar o comando, basta usar uma das outras opções.
1° Método: Utilizar o Comando ssh-copy-id
A sintaxe básica para este comando é:
ssh-copy-id usuario_remote@endereço_IP_remoto
Será solicitado que você insira a senha da máquina remota. Uma vez que a autenticação ocorrer com sucesso, a chave pública do SSH gerada será adicionada ao arquivo de chaves autorizadas da máquina remota. Então a conexão será encerrada automaticamente.
2° Método: Copiar a Chave Pública com SSH
O próximo método utiliza o SSH para copiar a chave pública. Esta opção é viável quando você possui um servidor em que o acesso SSH é feito via senha. O comando abaixo irá cuidar do processo, você só precisa inserir o usuário remoto e o endereço de IP da máquina:
cat ~/.ssh/id_rsa.pub | ssh usuario_remoto@edereço_IP_remoto "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Um registro será adicionado ao arquivo de chaves autorizadas da máquina.
3° Método: Copiar a Chave Pública Manualmente
O terceiro método é mais difícil por ser totalmente manual. Entretanto, em casos em que os métodos anteriores não funcionaram você pode experimentar este! Você irá precisar adicionar manualmente os conteúdos do arquivo id_rsa.pub dentro do arquivo ~/.ssh/authorized_keys do servidor.
Você pode visualizar o conteúdo do arquivo id_rsa.pub utilizando o editor vi ou o comando cat:
cat ~/.ssh/id_rsa.pub
O resultado será a chave gerada, que começa com o valor ssh-rsa. Copie esta chave. Em seguida, vamos acessar o servidor e criar o arquivo .ssh, caso não exista.
mkdir -p ~/.ssh
Você também pode criar o arquivo authorized_keys. Adicione a chave pública do SSH copiada no arquivo vazio, como mostrado abaixo:
echo SSH_chave_pública >> ~/.ssh/authorized_keys
O SSH_chave_pública seria a chave pública que você copiou da máquina fonte. Ela começará com ssh-rsa.
Uma vez que a chave tiver sido copiada, você pode configurar as permissões requeridas pelo com o comando chmod.
chmod -766 ~/.ssh
Testar o SSH Sem Senha
Desta maneira, vamos ter ativado a conexão SSH sem senha com sucesso e realizado as configurações básicas. Para testar a ferramenta, experimente o acesso remoto ao servidor. A sintaxe do comando fica:
ssh usuario_remoto@endereço_IP_remoto
Se tudo funcionou como deveria, você vai ter logado sem precisar colocar uma senha.
Como Desabilitar o SSH Sem Senha
Se você chegar a conclusão que prefere o acesso com senha, é só seguir os passos abaixo para desabilitar a conexão SSH sem senha. Abra o arquivo de configuração /etc/ssh/ssh_config. Qualquer editor irá funcionar, nós utilizamos o nano. Aqui você vai encontrar uma entrada com PasswordAuthentication. Modifique as linhas como mostrado:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
Depois de realizar as alterações, reinicie o SSH. No Ubuntu fica assim:
sudo systemctl restart ssh
O comando para CentOS é:
sudo systemctl restart sshd
Resumo
Agora você já sabe todos os passos para criar uma chave pública e configurar a conexão SSH sem senha, além de como desabilitá-la. Se gostou deste tutorial, não esqueça de comentar abaixo. Confira também os outros posts do nosso blog!
Comentários
May 13 2020
Ótima explicação, porém funcionou em um servidor e outro não. apenas com o usuario root funciona sem senha. O que pode ser?
May 18 2020
Marcio, tudo bem? Sobre os servidores, os dois são VPS? Se sim e se você tiver VPS com a Hostinger, entre em contato com agente pelo chat da sua conta de hospedagem pra ajudarmos você melhor! Quanto ao usuário, ele realmente é ligado á sua chave pública. Portanto, verifique a sua chave pública para conseguir acesso sem senha. :)
May 15 2020
Fiz esse procedimento do Debian (client) para Mac e deu certo, não pediu senha para autenticação. Porém do Mac (client) para Debian não deu certo. Será que existe algo diferente que precisa ser feito no Debian para que ele reconheça a chave pública?
May 18 2020
Roney, beleza? Você precisa liberar a chave pública de acesso do Mac para o Debian poder acessar o Mac. Tente fazer isso!