.

Secure Shell (SSH) é o padrão de fato para obter acesso a máquinas Linux remotas. O SSH tomou o lugar do telnet há muito tempo, para adicionar uma camada de segurança muito necessária para logins remotos.
Isso não significa, no entanto, que a configuração SSH padrão seja a melhor opção para aqueles que estão um pouco mais preocupados com a segurança de seus sistemas. Pronto para uso, o SSH funciona com logins tradicionais de usuário e senha. E mesmo que esses logins sejam muito mais seguros do que eram com telnet, você ainda está digitando e enviando uma senha pela Internet.
Se alguém interceptar essa senha, poderá acessar suas máquinas (desde que também conheça seu nome de usuário).
Há uma maneira muito melhor. A referida maneira é a autenticação de chave SSH. Com a autenticação de chave, você ignora a autenticação de nome de usuário e senha e a substitui por um par de chaves. Por que isso é importante? A principal razão pela qual isso adiciona segurança extra é que a única maneira de acessar esses servidores (quando eles estão configurados corretamente para autenticação de chave SSH) é ter o par de chaves correspondente.
Também: Como tornar o SSH ainda mais fácil de usar com arquivos de configuração
Veja como funciona:
-
Você gera uma chave SSH.
-
Você carrega a chave pública para um servidor remoto.
-
Você configura o SSH para permitir apenas a autenticação de chave.
-
Você efetua login de uma área de trabalho que contém a chave privada que corresponde à chave pública no servidor.
Uma vez configurado corretamente, a única maneira de ter acesso remoto ao servidor é se você tiver a chave privada correspondente. Sem essa chave, você não pode obter acesso. Contanto que você mantenha essa chave privada privada, tudo está bem.
Mas como você tira isso? Deixe-me te mostrar.
Requisitos
Para configurar a autenticação de chave SSH, você precisará de pelo menos duas máquinas Linux, uma na qual você efetua login e outra na qual efetua login. Vou demonstrar com Pop!_OS como meu desktop e Ubuntu Server como meu servidor remoto. Isso deve, no entanto, funcionar da mesma forma em praticamente qualquer distribuição Linux. Você também precisará de um usuário com privilégios sudo. Você também vai querer ter o mesmo nome de usuário nas máquinas locais e remotas.
É isso. Vamos fazer alguma mágica SSH.
Também: Como instalar o servidor Ubuntu em menos de 30 minutos
Como configurar a autenticação de chave SSH no Linux para logins mais seguros
No sistema operacional da área de trabalho, abra uma janela de terminal.
Na janela do terminal, gere seu par de chaves SSH com o comando:
ssh-keygen
Você será perguntado primeiro onde deseja salvar a chave. Sugiro salvá-lo no local padrão, então basta pressionar Enter quando solicitado. Você será solicitado a digitar e verificar uma senha para o par de chaves. Certifique-se de que essa senha seja forte e exclusiva. Não vá com uma senha vazia, pois isso não é seguro.
Também: Não use essas senhas: Estes são os 10 logins mais encontrados à venda online
Aqui é onde fica um pouco complicado. Você precisa enviar a chave pública para o servidor remoto. Para isso, você precisará saber o endereço IP do servidor. Você pode obter o endereço IP do servidor fazendo login nele e executando o comando ip a. Você deve ver o endereço IP listado. Com essas informações em mãos, volte para a área de trabalho e envie a chave pública para o servidor com o comando:
SERVIDOR ssh-copy-id
Onde SERVER é o endereço IP do servidor remoto.
Será solicitada a senha do seu usuário no servidor remoto. Depois de autenticar com sucesso, a chave pública será copiada e a autenticação da chave SSH estará pronta. Ao tentar fazer login no servidor remoto, você será solicitado a fornecer sua senha de chave SSH e não sua senha de usuário.
Como configurar o servidor remoto para autenticação de chave SSH
Agora que você copiou sua chave, faça login na máquina remota. O que vamos fazer agora é configurar o servidor SSH para permitir apenas conexões via SSH. Uma coisa a ter em mente antes de fazer isso é que, uma vez configurado, somente aqueles com autenticação de chave SSH configurada na máquina terão acesso permitido. Por causa disso, você deve certificar-se de ter copiado as chaves SSH de todas as máquinas desktop que você usará para fazer login no servidor remoto.
Também: Como gerenciar conexões SSH no MacOS com Termius
Com isso fora do caminho, abra o arquivo de configuração do daemon SSH no servidor remoto com o comando:
sudo nano /etc/ssh/sshd_config
Nesse arquivo, procure a linha:
PasswordAuthentication yes
Altere essa linha para:
PasswordAuthentication no
Salve e feche o arquivo. Reinicie o SSH com:
sudo systemctl restart sshd
Agora, a única maneira de se conectar com sucesso a essa máquina é por meio da autenticação de chave SSH. Qualquer máquina que não tenha um par de chaves correspondente terá o acesso negado.
Parabéns, você acabou de adicionar outra camada de segurança aos seus servidores Linux.
.