Acessar outro Mac via SSH sem senha: autenticação através de certificados RSA
O OpenSSH é talvez a ferramenta mais utilizada por administradores de sistemas atualmente. Quando de seu desenvolvimento, o objetivo dele foi substituir ferramentas inseguras como telnet, rlogin, etc. Ele permite que você se conecte de forma segura a qualquer dispositivo (como switches, roteadores, servidores Mac OS X, Linux, FreeBSD, OpenBSD, Solaris, etc.) que esteja executando um servidor SSH com suporte aos protocolos 1 ou 2.
A configuração
A autenticação vai acontecer assim:
- O cliente SSH vai enviar uma requisição para o servidor pedindo uma conexão
- O servidor SSH vai pedir o certificado do cliente para garantir que o cliente realmente tem a permissão de se conectar
- Quando receber o certificado, o servidor vai verificar em seu banco de dados se o certificado está correto. Caso esteja, a sessão será aberta.
Para isso, vamos começar gerando o certificado do cliente. Para isso execute o seguinte comando:
# ssh-keygen -t rsa -b 2048
O “ssh-keygen” não precisa necessariamente ser executado como root. Se a chave criada para o usuário “x” for reconhecida pelo servidor, o usuário “x” poderá logar como “root” no servidor, explico isso mais com mais detalhes adiante.
Executando o “ssh-keygen” será gerada uma chave RSA de 2048 bits (eu especifiquei na linha comando, mas não é necessário já que este é o padrão). O mínimo para o RSA é de 768 bits. Algumas perguntas serão feitas para você. Os valores exibidos entre “()” são os valores padrão e, se quiser mantê-los, basta pressionar “enter”, não precisa escrever a opção novamente:
- Enter file in which to save the key (/root/.ssh/id_rsa): Aqui você apenas define o diretório onde os certificados gerados serão armazenados;
- Enter passphrase (empty for no passphrase): Você tem a opção de digitar uma senha para o certificado. Isso não é necessário, você pode simplesmente apertar “enter” aqui e na próxima pergunta, que apenas confirma a passphrase digitada anteriormente.
Agora, temos que falar para o servidor que ele deverá aceitar esse certificado. Para isso, transferimos o certificado para o servidor de forma segura:
# scp /root/.ssh/id_rsa.pub root@192.168.1.104:/root
Isso irá copiar a chave pública do cliente para o servidor, no diretório /root. Agora, temos que adicionar esse certificado ao banco de dados que contém os certificados aceitos por esse servidor. No servidor, execute:
# cat id_rsa.pub >> /root/.ssh/authorized_keys
Vale lembrar que o diretório “.ssh” só existirá se você tiver utilizado o SSH pelo menos 1 vez, anteriormente (se ele não existir, pode criá-lo na mão). Caso o arquivo authorized_keys não exista, basta executar o comando citado acima.
Pronto! Agora você já pode se conectar ao servidor de uma forma absolutamente segura, sem medo que roubem a sua senha (já que você não a envia através da rede) e sem medo de ataques brute force (que são totalmente inofensivos contra autenticação baseada em certificados RSA).
Com qual usuário eu vou logar?
A autenticação via certificados pode ser utilizada para qualquer usuário válido no servidor, não apenas para o usuário root. Seguindo os passos descritos anteriormente, você poderá logar sem senha como root utilizando o seguinte comando:
$ ssh root@192.168.1.104
Isso, considerando que você não esteja executando este comando como root. Se estiver, basta:
# ssh 192.168.1.104

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.