Como configurar chaves SSH no CentOS 7

Introduction

SSH, ou shell seguro, é um protocolo criptografado usado para administrar e se comunicar com servidores. Ao trabalhar com um servidor CentOS, é provável que você passe a maior parte do seu tempo em uma sessão terminal conectada ao seu servidor através de SSH.

Neste guia, vamos focar na configuração de chaves SSH para uma instalação do CentOS 7 vanilla. As chaves SSH fornecem uma forma simples e segura de entrar no seu servidor e são recomendadas para todos os usuários.

Passo 1 – Criar o par de chaves RSA

O primeiro passo é criar um par de chaves na máquina cliente (normalmente o seu computador):

  • ssh-keygen

Por defeito, ssh-keygen irá criar um par de chaves RSA de 2048 bits, que é suficientemente seguro para a maioria dos casos de uso (opcionalmente pode passar na bandeira -b 4096 para criar uma chave maior de 4096 bits).

Após inserir o comando, você deve ver o seguinte prompt:

Output
Generating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

Pressione ENTER para salvar o par de chaves no subdiretório .ssh/ no seu diretório home, ou especifique um caminho alternativo.

Se tiver gerado anteriormente um par de chaves SSH, poderá ver o seguinte prompt:

Output
/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?

Se optar por sobregravar a chave no disco, não poderá mais autenticar-se usando a chave anterior. Tenha muito cuidado ao selecionar sim, pois este é um processo destrutivo que não pode ser revertido.

Você deve então ver o seguinte prompt:

Output
Enter passphrase (empty for no passphrase):

Aqui você opcionalmente pode digitar uma senha segura, o que é altamente recomendado. Uma frase-chave adiciona uma camada adicional de segurança para evitar que usuários não autorizados entrem no sistema. Para saber mais sobre segurança, consulte nosso tutorial em Como configurar a autenticação baseada em chaves SSH em um servidor Linux.

Você deve então ver a seguinte saída:

Output
Your identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+

Você agora tem uma chave pública e privada que você pode usar para autenticar. O próximo passo é colocar a chave pública no seu servidor para que você possa usar autenticação baseada em chaves SSH para se autenticar.

Passo 2 – Copie a chave pública para o CentOS Server

A maneira mais rápida de copiar sua chave pública para o host CentOS é usar um utilitário chamado ssh-copy-id. Devido à sua simplicidade, este método é altamente recomendado se disponível. Se você não tiver ssh-copy-id disponível na sua máquina cliente, você pode usar um dos dois métodos alternativos fornecidos nesta seção (copiar via SSH baseado em senha, ou copiar manualmente a chave).

Copiar sua chave pública Usando ssh-copy-id

A ferramenta ssh-copy-id está incluída por padrão em muitos sistemas operacionais, então você pode tê-la disponível no seu sistema local. Para que este método funcione, você já deve ter acesso SSH baseado em senha ao seu servidor.

Para usar o utilitário, você só precisa especificar a máquina remota à qual você gostaria de se conectar e a conta de usuário à qual você tem acesso SSH com senha. Esta é a conta para a qual sua chave SSH pública será copiada.

A sintaxe é:

Você pode ver a seguinte mensagem:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Isso significa apenas que o seu computador local não reconhece a máquina remota. Isto acontecerá na primeira vez que você se conectar a uma nova máquina. Digite “yes” e pressione ENTER para continuar.

Next, o utilitário irá procurar na sua conta local a tecla id_rsa.pub que criamos anteriormente. Quando encontrar a chave, ele solicitará a senha da conta do usuário remoto:

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new [email protected]'s password:

Digite a senha (sua digitação não será exibida para fins de segurança) e pressione ENTER. O utilitário irá conectar-se à conta no host remoto usando a senha que você forneceu. Ele então copiará o conteúdo da sua chave ~/.ssh/id_rsa.pub para um arquivo na home da conta remota ~/.ssh diretório chamado authorized_keys.

Você deve ver a seguinte saída:

Output
Number of key(s) added: 1Now try logging into the machine, with: "ssh '[email protected]'"and check to make sure that only the key(s) you wanted were added.

Neste ponto, a sua chave id_rsa.pub foi carregada para a conta remota. Você pode continuar para o Passo 3.

Copiar chave pública usando SSH

Se você não tem ssh-copy-id disponível, mas você tem acesso SSH baseado em senha a uma conta no seu servidor, você pode carregar suas chaves usando um método SSH convencional.

Nós podemos fazer isso usando o comando cat para ler o conteúdo da chave SSH pública em nosso computador local e piping que através de uma conexão SSH para o servidor remoto.

No outro lado, podemos assegurar que o directório ~/.ssh existe e tem as permissões correctas sob a conta que estamos a usar.

Podemos então emitir o conteúdo que pipedámos para um ficheiro chamado authorized_keys dentro deste directório. Vamos usar o símbolo >> redirect para anexar o conteúdo em vez de o sobrescrever. Isto permitir-nos-á adicionar chaves sem destruir chaves previamente adicionadas.

O comando completo parece-se com isto:

  • cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Pode ver a seguinte mensagem:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Isto significa que o seu computador local não reconhece a máquina remota. Isto irá acontecer na primeira vez que você se conectar a uma nova máquina. Digite “sim” e pressione ENTER para continuar.

Depois, você deverá ser solicitado a digitar a senha da conta do usuário remoto:

Output
[email protected]'s password:

Depois de digitar sua senha, o conteúdo da sua tecla id_rsa.pub será copiado para o final do arquivo authorized_keys da conta do usuário remoto. Continue para o Passo 3 se isto foi bem sucedido.

Copiando a chave pública manualmente

Se você não tiver acesso SSH baseado em senha ao seu servidor disponível, você terá que completar o processo acima manualmente.

Enviaremos anexar manualmente o conteúdo do seu arquivo id_rsa.pub ao arquivo ~/.ssh/authorized_keys da sua máquina remota.

Para exibir o conteúdo da sua chave id_rsa.pub, digite isto no seu computador local:

  • cat ~/.ssh/id_rsa.pub

Você verá o conteúdo da chave, que deve se parecer com isto:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== [email protected]

Acesso ao seu host remoto usando qualquer método que você tenha disponível.

Após ter acesso à sua conta no servidor remoto, você deve ter certeza que o diretório ~/.ssh existe. Este comando irá criar o diretório se necessário, ou não fazer nada se ele já existir:

  • mkdir -p ~/.ssh

Agora, você pode criar ou modificar o arquivo authorized_keys dentro deste diretório. Pode adicionar o conteúdo do seu ficheiro id_rsa.pub ao final do ficheiro authorized_keys, criando-o se necessário, usando este comando:

  • echo public_key_string >> ~/.ssh/authorized_keys

No comando acima, substitua o ficheiro public_key_string pela saída do comando cat ~/.ssh/id_rsa.pub que executou no seu sistema local. Deve começar com ssh-rsa AAAA....

Finalmente, vamos assegurar que o directório ~/.ssh e o ficheiro authorized_keys tenham as permissões apropriadas definidas:

  • chmod -R go= ~/.ssh

Este remove recursivamente todas as permissões de “grupo” e “outras” para o directório ~/.ssh/.

Se você está usando a conta root para configurar chaves para uma conta de usuário, também é importante que o diretório ~/.ssh pertença ao usuário e não a root:

  • chown -R sammy:sammy ~/.ssh

Neste tutorial nosso usuário é nomeado sammy mas você deve substituir o nome de usuário apropriado no comando acima.

Agora podemos tentar autenticação sem senha com nosso servidor Ubuntu.

Passo 3 – Autenticar no seu servidor CentOS usando chaves SSH

Se você completou com sucesso um dos procedimentos acima, você deve ser capaz de entrar no host remoto sem a senha da conta remota.

O processo básico é o mesmo:

Se esta é a primeira vez que você se conecta a esta máquina (se você usou o último método acima), você pode ver algo como isto:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Isto significa que o seu computador local não reconhece a máquina remota. Digite “sim” e pressione ENTER para continuar.

Se você não forneceu uma senha para sua chave privada, você será logado imediatamente. Se você forneceu uma senha para a chave privada quando você a criou, você será solicitado a digitar a senha agora. Após a autenticação, uma nova sessão shell deverá abrir para você com a conta configurada no servidor CentOS.

Se a autenticação baseada em chave foi bem sucedida, continue para aprender como proteger ainda mais o seu sistema desativando a autenticação por senha.

Passo 4 – Desativar autenticação por senha no seu servidor

Se você foi capaz de entrar na sua conta usando SSH sem uma senha, você configurou com sucesso a autenticação baseada em chave SSH na sua conta. Entretanto, seu mecanismo de autenticação baseado em senha ainda está ativo, o que significa que seu servidor ainda está exposto a ataques de força bruta.

Antes de completar os passos nesta seção, certifique-se de que você tem a autenticação baseada em chaves SSH configurada para a conta root neste servidor, ou de preferência, que você tem a autenticação baseada em chaves SSH configurada para uma conta não-root neste servidor com privilégios de sudo. Este passo irá bloquear os logins baseados em senhas, assim assegurando que você ainda será capaz de obter acesso administrativo é crucial.

Após você ter confirmado que sua conta remota tem privilégios administrativos, faça logon no seu servidor remoto com chaves SSH, seja como root ou com uma conta com privilégios de sudo. Depois, abra o arquivo de configuração do daemon SSH:

  • sudo vi /etc/ssh/sshd_config

No arquivo, procure por uma diretiva chamada PasswordAuthentication. Isto pode ser comentado. Pressione i para inserir texto, e então descomente a linha e defina o valor para “não”. Isto irá desabilitar sua habilidade de entrar via SSH usando senhas de conta:

/etc/ssh/sshd_config
...PasswordAuthentication no...

Quando terminar de fazer as alterações, pressione ESC e então :wq para escrever as alterações no arquivo e sair. Para realmente implementar essas alterações, precisamos reiniciar o serviço sshd service:

  • sudo systemctl restart sshd.service

Como precaução, abra uma nova janela de terminal e teste se o serviço SSH está funcionando corretamente antes de fechar esta sessão:

Após ter verificado seu serviço SSH, você pode fechar com segurança todas as sessões atuais do servidor.

O daemon SSH no seu servidor CentOS agora só responde a chaves SSH. A autenticação baseada em senha foi desativada com sucesso.

Conclusão

Você agora deve ter a autenticação baseada em chaves SSH configurada no seu servidor, permitindo que você entre sem fornecer uma senha de conta.

Se você quiser saber mais sobre como trabalhar com SSH, dê uma olhada no nosso Guia SSH Essentials.

Deixe uma resposta

O seu endereço de email não será publicado.