SSH sem senha! Melhor, SSH com chaves rsrs

Em um primeiro momento, ao ler o trecho do título “SSH sem senha”, já nos é remetido o seguinte pensamento: Opa, mas isso é seguro??

Na verdade é o acesso via SSH através de chave pública e privada, estabelecendo uma confiança entre o servidor e o cliente, permitindo o acesso somente quando validadas as chaves. É algo bem simples mas por incrível que pareça, não são todos os administradores que conhecem e que utilizam tal método. Vamos lá, mãos a obra!

1. Estrutura realizada:

Para nosso mini-laboratório, utilizamos uma conexão entre duas máquinas Linux, com “sabores” de distros diferentes, Debian e CentOs.

centos-debian

Nossa máquina Debian será nosso cliente e, consequentemente quem irá gerar as chaves. O CentOS será nosso servidor, o SO do qual será realizada a conexão.

2. Gerando chave pública e privada

Em nosso Debian, vamos criar o par de chaves pública e privada.  A chave privada é de posse da máquina Debian e a chave pública é exatamente a que colocaremos no servidor CentOs do qual desejamos acessar.

ssh-keygen -t rsa -C “Minha_Chave”_SSH”

criando-chaves2ssh-keygen -> Gerador de chaves

-t -> Especifica o tipo de chave, no nosso caso uma chave RSA

-C -> Comentário da chave

Serão gerados dois arquivos, id_rsa (Chave Privada) e id_rsa.pub (Chave Pública).

criando-chaves3

 3. Copiando chave pública para máquina Host.

Bem, nesta etapa, copiamos nossa chave pública localizada em /home/user/.ssh/id_rsa.pub para nosso servidor, o CentOS.

Ainda teremos de fazer conexão SSH utilizando senha, vamos passá-la via SCP:

scp-chave-publica

No exemplo citado, estamos passando a chave pública para conexão através do usuário rahumo do Servidor CentOS. Portanto, nossa conexão será sempre do usuário rhm da máquina Debian para o usuário rahumo no Servidor CentOS.

4. Editando o arquivo sshd_config em /etc/ssh/editar-sshd-centos editar-sshd-centos2É importante definir que a autenticação ao servidor será efetuada via chave também, portanto os parâmetros PubkeyAuthentication yes deve estar habilitado, assim como o AuthorizedKeysFile .ssh/authorized_keys também.

Vamos dar um restart no serviço /etc/init.d/sshd restart

Lembrando que como agora definimos que o arquivo de chaves autorizadas é o authorized_keys, devemos copiar a chave pública que passamos para o servidor para o arquivo citado.

authorized_keys_centoscat key.pub > authorized_keys

 5. Testando finalmente!

Agora, vamos fazer a conexão pelo usuário rhm em Debian ao usuário rahumo no CentOS.

debian-auth-com-chave

 

Pronto! SSH sem senha! Opa, quer dizer, SSH com chaves rsrs.

É um processo bem simples e rápido, porém é muitas vezes desconhecido pela maioria dos administradores. É muito útil e prático. Sua chave pública pode também ser compartilhada em outros servidores, dessa forma possibilitando a conexão a estes também via chaves.

Dica Importante! De maneira alguma insira permissões de escrita para “others” em .ssh/ . Um exemplo é atribuir chmod 777 -R ./ssh, dessa forma o sistema atribuirá o caminho como inseguro e a autenticação via chaves não funcionará.

Dúvidas, sugestões, críticas? Todas são bem vindas!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *