Como habilitar logins SSH sem senha no Linux
É uma excelente ideia entrar no seu servidor SSH sem uma senha. Sério, livre-se disso. Não há necessidade de usar senha em um dos serviços mais atacados em servidores Linux, certo? Proteger um servidor SSH usando autenticação baseada em senha padrão é uma má ideia. Os invasores podem facilmente usar senhas de força bruta e, quando são a única coisa entre um malfeitor e seu servidor, você definitivamente deve ficar nervoso.
É por isso que a autenticação baseada em chave RSA é muito melhor. Você pode configurar e proteger seu servidor Linux para permitir acesso apenas de computadores que possuem as chaves RSA que já foram aceitas. Qualquer outra pessoa será rejeitada imediatamente. Como benefício adicional, você pode criar essas chaves com ou sem uma senha, que depende inteiramente de você. Uma chave forte sem uma senha é boa na maioria dos casos, no entanto.
Se você também usa dispositivos Linux em casa, tem o benefício adicional de conveniência. Digamos que você queira configurar o encaminhamento SSH X de sua estação de trabalho Linux para seu laptop. Você realmente deseja inserir sua senha toda vez que executar um programa remoto? Configure as chaves SSH e você não precisará.
Instale os pacotes
Há alguns pacotes que você precisa. Você provavelmente já tem alguns deles, mas é uma boa ideia verificar. Os pacotes são os mesmos no servidor e no cliente. No entanto, também há uma boa chance de que ambas as máquinas sejam servidores e clientes uma da outra (situação inicial), então você pode querer certificar-se de ter instalado esses pacotes.
O metapacote OpenSSH não é instalado por padrão nos sistemas Debian ou Ubuntu. Se você ainda não o tiver instalado, poderá fazê-lo executando o seguinte comando:
sudo apt install ssh
Gere sua chave SSH no Linux
É muito fácil gerar sua chave SSH no Linux. Apenas diga ao OpenSSH que você precisa gerar a chave. Também é uma boa ideia especificar a quantidade de bits com o -b
sinalizador e o tipo com -t
. Uma chave de 4096 bits é melhor, pois fornece criptografia mais forte.
ssh-keygen -t ed25519
Primeiro, o utilitário perguntará onde você deseja armazenar a chave. Basta clicar Enterno diretório padrão. Quando solicitar uma senha, deixe em branco para uma chave sem senha e autenticação sem senha. Se você quiser usar uma senha para sua chave, insira-a aqui.
Seu computador levará alguns segundos para gerar sua chave. Quando terminar, imprimirá uma representação de arte ASCII de sua chave no terminal.
Enviando sua chave para o host Linux remoto
Para usar sua chave, você precisará enviá-la para seu servidor remoto. O OpenSSH também possui outro utilitário integrado para isso. Diga onde está sua chave e com qual usuário no servidor associá-la.
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@ip_remote_host
Substitua ip_remote_host
pelo endereço IP real do host remoto, que você gerenciará via SSH. Substitua username
pelo nome de usuário real no host remoto.
É crucial que você use a -i
opção de especificar o arquivo de identidade que contém sua chave pública. Se você tentar usar sua chave SSH sem essa opção, poderá receber um erro.
Testando sua conexão SSH no Linux
Com sua chave SSH no servidor remoto, agora você pode testar se sua conexão funciona corretamente.
Faça login com o seguinte comando:
ssh username@ip_remote_host
O host remoto fará o login sem solicitar a senha da conta do usuário.
No entanto, se você cometer um erro durante o processo, o daemon SSH retornará automaticamente à autenticação de senha para sua conta de usuário. Isso permite que você ainda acesse seu servidor remoto, mesmo se tiver uma chave RSA que não esteja funcionando.
Configurando o SSH para bloquear senhas
Para obter a melhor segurança, você precisa desabilitar logins de senha SSH em seu servidor Linux. Semelhante à habilitação da autenticação de dois fatores no SSH, isso impede que alguém force a entrada em seu servidor.
É importante certificar-se de que você pode fazer login de forma confiável com sua chave SSH antes de fazer isso, pois é possível bloquear seu servidor remoto se você tiver uma chave com defeito.
Você pode encontrar o arquivo de configuração para seu daemon SSH em “/etc/ssh/sshd_config.” Abra o arquivo no servidor usando sudo e seu editor de texto preferido. Por exemplo, abra este arquivo usando o nano executando o seguinte comando:
sudo nano /etc/ssh/sshd_config
Encontre as linhas abaixo pressionando Ctrl+ We edite-as para que se pareçam com o exemplo. Descomente ambas as entradas e altere os valores para no
.
PasswordAuthentication no
PermitEmptyPasswords no
PasswordAuthentication
especifica se deve usar a autenticação de senha. Definimos isso como “não” porque queremos usar apenas chaves SSH.
PermitEmptyPasswords
especifica se o servidor permite login com uma senha vazia. Você nunca deve permitir isso, então definimos como “não”.
Em seguida, encontre a linha “UsePAM” e altere-a para “no”. Isso evitará que o daemon use quaisquer métodos de autenticação (senha, Kerberos, etc.) que não sejam chaves SSH.
UsePAM no
Salve o arquivo pressionando Ctrl+ O, depois Ctrl+ Xe recarregue o servidor SSH.
sudo systemctl restart ssh
Agora que você configurou com sucesso seu servidor para usar apenas chaves SSH para autenticação, qualquer pessoa que tentar fazer login sem uma chave RSA válida será negada imediatamente.
perguntas frequentes
Estou recebendo uma mensagem de “Conexão recusada” quando envio minha chave SSH para meu servidor Linux. Como faço para corrigir isso?
Certifique-se de que o servidor SSH esteja em execução no host remoto. Você pode verificar isso executando sudo systemctl status ssh
. Se o serviço não estiver em execução, você pode iniciá-lo com este comando: sudo systemctl start ssh
.
Se um firewall estiver em execução no servidor, verifique se a porta 22 está aberta. Você pode fazer isso executando sudo ufw status
. Se o SSH não estiver listado, você pode ativá-lo executando este comando: sudo ufw allow ssh
.
Recebo o erro “Permissão negada (chave pública)” quando tento fazer login. O que devo fazer?
Esse erro significa que você configurou seu servidor para usar chaves para autenticação, mas ainda está tentando fazer login com uma senha. Isso pode ser devido a uma chave RSA ausente ou a uma configuração SSH incorreta. Verifique se você copiou sua chave pública para o servidor corretamente e se está especificando a chave pública correta ao se conectar.
Recebo um erro “Falha na verificação da chave do host” quando tento me conectar. Como faço para corrigir isso?
Este erro significa que a chave do host do servidor SSH foi alterada. Isso pode acontecer se o servidor tiver sido reinstalado. Você pode gerar novamente uma nova chave pública e copiá-la para o host remoto. Repita as etapas deste artigo para regenerar e adicionar a nova chave ao servidor.
É possível usar várias chaves SSH no mesmo servidor Linux remoto?
Sim. Você pode usar a -f
opção no OpenSSH para especificar a chave exata que deseja usar para se conectar a um servidor remoto. Por exemplo, a execução ssh -f ~/.ssh/id_rsa_2 username@remote_ip_address
conectará você ao seu servidor remoto usando a chave “id_rsa_2” em vez do padrão “id_rsa”.
No entanto, é importante observar que este comando só funcionará se o seu servidor remoto já reconhecer sua nova chave. Você precisa primeiro copiá-lo para o servidor remoto usando ssh-copy-id
. Semelhante às etapas acima, você pode fazer isso por meio de senha ou autenticação de chave RSA.
Estou recebendo um erro de “Permissão negada” sempre que tento copiar minha chave SSH para o meu servidor.
Esse problema provavelmente ocorre devido a um problema de permissão em seu servidor remoto. Na maioria dos casos, o ssh-copy-id
utilitário deve resolver adequadamente quaisquer problemas de acesso assim que se conectar ao servidor remoto. No entanto, há casos em que esse recurso é interrompido e falha ao copiar corretamente o “id_rsa” de sua máquina local.
Para corrigir isso, faça login em seu servidor remoto e execute chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh
. Isso definirá os bits de permissão corretos para a pasta “.ssh” e seu conteúdo.
Crédito da imagem: Unsplash . Todas as alterações e screenshots por Ramces Red.
Deixe um comentário