Acessar o ssh sem senha, acho que é uma das coisas, mais util para quem tem que lidar com vários servidores ao mesmo tempo, principalmente para quem precisa fazer copia de arquivos entre eles.
Para se utilizar desta facilidade, basta ter instalado o ssh-keygen, para gerar a chave da maquina. Para esta geração pode se utilizar dois tipos de criptografias, sendo elas, rsa e dsa
O que é RSA?
RSA é um algoritmo de criptografia de dados, que deve o seu nome a três professores do Instituto MIT (fundadores da atual empresa RSA Data Security, Inc.), Ronald Rivest, Adi Shamir e Leonard Adleman, que inventaram este algoritmo — até a data (2008), a mais bem sucedida implementação de sistemas de chaves assimétricas, e fundamenta-se em teorias clássicas dos números. É considerado dos mais seguros, já que mandou por terra todas as tentativas de quebrá-lo. Foi também o primeiro algoritmo a possibilitar criptografia e assinatura digital, e uma das grandes inovações em criptografia de chave pública.
fonte:http://pt.wikipedia.org/wiki/RSA
RSA é comumente mais usado, principalmente por ser o padrão do ssh-keygen.
O que é DSA?
DSA é o acrônimo de Padrão de Assinatura Digital (Digital Signature Algorithm), criado pelo NIST, e especifica o DSA para assinatura digital e SHA-1 para hashing. O DSA é um algoritmo assimétrico e a chave privada opera sobre o hash da mensagem SHA-1. Para verificar a assinatura um pedaço do código calcula o hash e outro pedaço usa a chave pública para decifrar a assinatura, e por fim ambos comparam os resultados garantindo a autoria da mensagem. O DSA trabalha com chaves de 512 à 1024 bits, porém ao contrário do RSA que é multipropósito, o DSA somente assina e não garante confidencialidade. Outro ponto contra o DSA é que a geração da assinatura é mais rápida do que o RSA, porém de 10 a 40 vezes mais lenta para conferir a assinatura.
Como funciona o ssh-keygen?
O ssh-keygen, gera as chaves publicas e privadas, para que a partir delas se possa acessar o servidor. Que no nosso caso ocorrerá sem a digitação da senha, mas essa utilização de chaves, fica como uma dica, para melhorar a segurança de acesso ao servidor, obviamente, se utilizando com senha.
Mãos na massa
Abra seu terminal, chama sua vó, e toda a família para assistir.
Gerando as chaves
Fica ao seu critério qual criptografia utilizar, por isso fiz a explicação das duas. Já que você ta com sua família ai, faça uma votação, para decidir, qual a melhor. Após a votação, siga o tutorial, utilizarei o rsa, se for utiliza dsa, basta trocar onde tem rsa, por dsa.
Faça login no terminal, com o usuário, que você quer acessar o servidor sem a senha. Pois a chave é específica ao usuário.
ssh-keygen -t rsa
Você vai ter a seguinte resposta:
Generating public/private rsa key pair. Enter file in which to save the key (/home/vinicius/.ssh/id_rsa):
Meu usuário, é vinicius, não sei se você percebeu, mas meu nome é esse(veja a url!).Enfim, escolha a pasta da qual deseja salvar a chave. Se ta com preguiça apenas confirma.E receberá outra mensagem.Esse passo é muito importante
Enter passphrase (empty for no passphrase):
Como você leu acima, Entre com a palavra passe( a senha ). Como queremos acessar sem senha, apenas, confirme(aperta enter, pede ajuda a tua vó!) sem digitar nada.Ele vai pedir confirmação, aperte “enter” novamente. A confirmação:
Enter same passphrase again:
Pronto, criou a chave!
Your identification has been saved in /home/vinicius/.ssh/id_rsa. Your public key has been saved in /home/vinicius/.ssh/id_rsa.pub. The key fingerprint is...
Ele gera um bocado de carácter bonitinho, que não convêm colocar neste post. Tudo criado, agora vamos colocar a chave pública, no servidor, ao qual queremos acessar sem senha.
Colocando a chave pública no servidor destino!
Existem algumas formas diferentes de fazer esse passo, inclusive encontrei uma muito interessante ao escrever esse post. Vou descrever duas, uma simples, e outra mais simples ainda.
Forma simples
O que deve ser feito é colocar o conteúdo da chave pública(id_rsa.pub) no servidor, especificamente no arquivo, authorized_keys, tambem no usúario do servidor, ao qual teremos acesso.
Vamos supor que o nome do usuário do seja joao, no servidor viniciusmuniz.com
Primeiro vamos copiar a chave pública para o servidor
scp /home/vinicius/.ssh/id_rsa.pub joao@viniciusmuniz.com:/home/joao/
Digite sua senha, a sua penúltima vez a digita-la. E depois acesse o servidor, e coloque a chave pública no authorized_keys
ssh joao@viniciusmuniz.com cat /home/joao/id_rsa.pub >> /home/joao/.ssh/authorized_keys
Pronto! Teste agora o acesso ssh, que já não haverá mais necessidade de senha.
Forma super simples
Essa forma eu encontrei escrevendo esse post. Existe uma facilidade que é o ssh-copy-id, que com apenas um comando, ele já insere a chave pública no servidor destino.
ssh-copy-id -i /home/vinicius/.ssh/id_rsa.pub joao@viniciusmuniz.com
Acessando o ssh sem senha
Agora basta acessar, que não haverá mais a necessidade de senha. Divirtam-se!
ssh joao@viniciusmuniz.com
artigo muito bom, mas os erros de portugues dificultam um pouco a leitura. fica a dica.
Show, aqui funfou de boa!
Show de bola em.. Ajudou bastante. =)
Obrigado! Assina a lista para receber mais dicas.
Vinicius, tudo certo?
Seguinte, eu fiz todo o passo descrito no artigo, porém não consigo fazer funcionar em três servidores. Vários servidores estão funcionando, mas quando eu tento acessar entre dois deles, que está sendo acessado e está acessando em outros servidores, não dá certo. Fica sempre pedindo senha. Tentei fazer o acesso com chaves pública rsa e dsa, mas nenhuma delas funciona. Tem algum comando que limpe alguma chave para então enviá-la novamente?
Opa leandro,
Primeiro verifica o erro, acessa o servidor, e abre o log auth.log. Lá deve ter o erro na hora de usar a chave.
Valeu parceiro!
DSA é Digital Signature Algorithm … Mas seu tutorial está muito bom e bem descrito.
Obrigado, Corrigi!
Olá a todos.
Muito obrigado pelo conteúdo Vinicius.
Funcionou perfeitamente.