Como autenticar por SSH com chaves em vez de senhas

O SSH é uma ótima maneira de obter acesso remoto ao seu computador. Quando você abre as portas em seu roteador (a porta 22 para ser exato), você pode não apenas acessar seu servidor SSH de dentro de sua rede local, mas de qualquer lugar do mundo.

O SSH é uma ótima maneira de obter acesso remoto ao seu computador.  Quando você abre as portas em seu roteador (a porta 22 para ser exato), você pode não apenas acessar seu servidor SSH de dentro de sua rede local, mas de qualquer lugar do mundo.
Propaganda

Como autenticar sobre SSH com chaves em vez da chave de senhas O SSH é uma ótima maneira de obter acesso remoto ao seu computador. Semelhante ao FTP, você pode se conectar através de SSH FTP O que é SSH e como é diferente do FTP [Tecnologia Explicada] O que é SSH e como é diferente do FTP [Tecnologia Explicada] Leia mais para obter acesso seguro a um servidor de arquivos com seu FTP favorito Cliente Mestre Transferências de Arquivos FTP em Todos os Seus Sites Com Transferências de Arquivos FTP do FileZilla Master em Todos os Seus Sites com o FileZilla Um grande número de clientes FTP antigos tinha problemas quando se tratava de grandes transferências de arquivos. Os aplicativos experimentaram os tempos de espera habituais que você esperaria quando o computador fica lá por 15 a ... Leia mais, acessando rapidamente arquivos remotos ou até montando um disco de rede em seu computador. Mas há mais para o SSH do que o acesso remoto a arquivos. Fazer o login via SSH no Terminal (ou usar o PuTTY no Windows) fornece acesso remoto ao shell (afinal, o SSH é a abreviação de Secure SHell). É como eu gerencio meu servidor de mídia à distância.

Quando você abre as portas O que é o encaminhamento de porta e como ele pode me ajudar? [MakeUseOf Explains] O que é o encaminhamento de porta e como ele pode me ajudar? [MakeUseOf Explains] Você chora um pouco por dentro quando alguém lhe diz que há um problema de redirecionamento de porta e é por isso que seu novo aplicativo não funciona? Seu Xbox não permite que você jogue, seus downloads de torrent recusam ... Leia mais no seu roteador (a porta 22, para ser exato) você pode não apenas acessar seu servidor SSH de dentro de sua rede local, mas de qualquer lugar do mundo.

No entanto, você não quer arriscar usar uma senha fraca para autenticação. Se alguém obtiver acesso ao seu computador pelo SSH, ele obterá acesso completo ao shell. Só para ficar claro, isso não é algo que queremos. Felizmente, é muito fácil configurar seu servidor SSH global de maneira muito segura, usando autenticação baseada em chave e desativando a autenticação de senha em seu servidor.

Isso é para mim?

É tentador se tornar relaxado com segurança pessoal. Se você estiver usando o servidor para meios privados, você pode pensar que as pessoas simplesmente não sabem sobre o seu servidor e, portanto, não tentarão hackeá-lo - segurança através da obscuridade. Isso seria uma suposição muito errada. Como (a maioria) o tráfego SSH é transmitido na porta 22, os invasores verificam rotineiramente a visibilidade da porta 22 em endereços IP aleatórios, seguidos por um ataque de força bruta. Essa é uma das maneiras pelas quais os botnets são feitos para uso em ataques DDOS. O que é um ataque DDoS? [MakeUseOf explica] O que é um ataque DDoS? [MakeUseOf Explains] O termo DDoS apita sempre que o ciberativismo eleva sua cabeça em massa. Esse tipo de ataque faz manchetes internacionais por vários motivos. Os problemas que iniciam esses ataques DDoS são geralmente controversos ou altamente ... Leia Mais.

Para encurtar a história: se você transmitir seu servidor SSH pela Internet (por exemplo, encaminhar porta 22), então sim, isso é para você.

A ideia dos logins SSH baseados em chave

Os logins de SSH baseados em chave dependem da ideia de criptografia de chave pública. Levaria muito longe para explicar os meandros, mas vamos tentar pintar uma imagem simples do que está acontecendo nos bastidores.

No processo abaixo, o computador cliente gera duas chaves: uma chave pública e uma chave privada. A idéia geral é que você pode criptografar dados com a chave pública, mas somente descriptografá-los com a chave privada. Colocaremos a chave pública no servidor e pediremos que criptografe toda a comunicação de saída com ela. Isso garante que apenas os clientes com a chave privada possam descriptografar e ler os dados.

1. Instale o OpenSSH

Primeiro, vamos configurar um servidor SSH usando o OpenSSH. Se você já tem um servidor SSH em execução e só quer saber como configurar a autenticação baseada em chave, pode pular esta etapa. Use o seu gerenciador de pacotes favorito para instalar o aplicativo do servidor OpenSSH. A maneira mais simples ainda pode ser executar o comando apt-get a partir do Terminal.

sudo apt-get install openssh-server

Digite sua senha, confirme e aguarde um minuto para concluir a instalação. Parabéns, agora você tem um servidor SSH. (Essa foi fácil!)

ubuntu-install-openssh

Você pode usar o aplicativo como está ou editar /etc/ssh/sshd_config para configurá-lo. Execute o comando man sshd_config no Terminal para obter mais informações. Outro grande recurso para aprender mais sobre o OpenSSH é a página de ajuda relevante do Ubuntu.

2. Gerar Chaves

Nós vamos gerar um conjunto de chaves. Execute os seguintes comandos (adaptados da página de ajuda do OpenSSH / Keys do Ubuntu).

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

O primeiro comando cria um diretório oculto '.ssh' em sua pasta pessoal, o segundo comando altera as permissões de acesso da pasta enquanto o terceiro comando realmente gera um conjunto de chaves RSA. Primeiro você será perguntado por um local para salvar as chaves (deixe em branco e pressione Enter para salvar no local padrão) e em segundo lugar para uma frase secreta.

Essa frase secreta criptografa ainda mais a chave privada que está armazenada em seu computador, essencialmente dando a você mais tempo para proteger o servidor SSH se sua chave privada for roubada. Certifique-se de escolher uma frase secreta que consiga lembrar, pois você precisará inseri-la quando tentar usar a chave.

3. Transferir a chave pública

Em seguida, você precisará transferir a chave pública gerada na etapa anterior para o computador do servidor SSH. Se a sua máquina cliente também executa o Linux, isso pode ser conseguido com muita facilidade, executando o comando abaixo (substituindo e para o nome de usuário e endereço IP no seu servidor SSH).

ssh-copy-id @

Se o seu cliente não suportar o comando ssh-copy-id, você poderá usar o comando abaixo. É um pouco mais complicado, mas essencialmente alcança os mesmos resultados.

cat ~/.ssh/id_rsa.pub | ssh @ "mkdir ~/.ssh; cat>>~/.ssh/authorized_keys"

Você será solicitado a digitar a senha do usuário para o servidor SSH. Se os comandos forem executados sem erros, sua chave pública será copiada para o servidor.

4. Desativar autenticação de senha

Observe que o seu sistema ainda não é mais seguro do que após o primeiro passo. Embora pelo menos um cliente esteja configurado para usar a autenticação baseada em chave, isso ainda deixa espaço para outros clientes se conectarem com uma senha. Para terminar, desabilitaremos a autenticação por senha. Após essa etapa, somente os computadores que passaram pelo processo acima podem se conectar ao seu servidor SSH.

Para desabilitar a autenticação por senha, edite o arquivo /etc/ssh/sshd_config no seu editor favorito. Uma das maneiras mais fáceis de editar um arquivo restrito é, novamente, o uso do Terminal. (Eu sou parcial ao nano, mas você pode usar o que for mais confortável para você.)

sudo nano /etc/ssh/sshd_config

Cerca de 40 linhas da parte inferior do arquivo, você encontrará

#PasswordAuthentication yes

Remova o sinal numérico (#) e mude a configuração para 'no', conforme abaixo.

PasswordAuthentication no

O arquivo final deve ser algo como isto:

sshd_config

Salve o arquivo pressionando CTRL + X. Confirme a edição e o nome do arquivo, e você está quase pronto. Basta reiniciar o servidor SSH para executá-lo com essas novas configurações.

sudo restart ssh

Você também notará que seu cliente deixará de pedir a frase secreta para descriptografar sua chave se a autenticação de senha estiver desabilitada no servidor. Agora que você tem um servidor SSH seguro, como pretende usá-lo? Como um servidor de arquivos seguro, um shell remoto ou para encaminhar outros serviços por SSH? Deixe-nos saber na seção de comentários abaixo!

Crédito de imagem: Shutterstock

In this article