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.
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”
ssh-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).
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:
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/
É 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.
5. Testando finalmente!
Agora, vamos fazer a conexão pelo usuário rhm em Debian ao usuário rahumo no CentOS.
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!