Utilizando SSH com método de autenticação publickey + ssh-agend + ssh-add

O presente documento tem por finalidade descrever a utilização dos softwares ssh-agent e ssh-add. O ssh-agent é um agente de autenticação, ele gerencia as conexões ssh de sua sessão login. Fazendo par com o ssh-add, conseguimos manter as conexões ssh no ssh-agent.

[ Hits: 56.378 ]

Por: David Verzolla em 29/04/2005


Introdução



O presente documento tem por finalidade descrever a utilização dos softwares ssh-agent + ssh-add. O ssh-agent é um agente de autenticação, ele gerencia as conexões ssh de sua sessão login. Fazendo par com o ssh-add, conseguimos manter as conexões ssh no ssh-agent, este por sua vez faz as conexões ssh com os servidores compatíveis com essa implementação. A grande vantagem nisso tudo é digitar sua senha - passphase - apenas na primeira vez, e deixar o ssh-agent gerenciar as outras conexões. Mão na massa!

Softwares necessários:

Pacote SSH: OpenSSH, entre outros existentes no mercado que tenham os softwares ssh-keygen, ssh-agent e ssh-add.

Passos:

1 - Gerar uma chave pública com o ssh-keygen.

O ssh-keygen vai gerar duas chaves, uma simétrica e uma assimétrica. Tais conceitos não serão discutidos nesse documento, mas basicamente a chave pública é a chave que você compartilha com os hosts que irão fazer parte da conexão confiável, a outra chave vai ficar no computador de onde as conexões serão originadas.

Exemplo:

$ cd ~/.ssh/
$ ssh-keygen dverzolla


Um output semelhante a este deve aparecer:

Generating 2048-bit dsa key pair
   1 OOo.oOo.oOo.

Após executado o comando você será questionado sobre uma passphrase, que é uma alternativa à senha que você usa para entrar no sistema, ela fica armazenada - criptografada - na chave privada.

Passphrase :
Again      :
Private key saved to dverzolla
Public key saved to dverzolla.pub
Com as chaves em mãos, podemos agora enviar a chave pública para o servidor que desejamos conectar.

Exemplo:

$ scp dverzolla.pub dverzolla@host2:/home/dverzolla/.ssh/

Devemos também criar dois arquivos, um chamado identification e outro authorization. Estes serão os arquivos de controle para ambos os hosts, o identification fica no host de origem e o authorization no host de destino.

No nosso caso: identification no host1 e authorization no host2.

Exemplo:

$ cd ~/.ssh/
$ echo "IdKey dverzolla" > identification
$ echo "Key dverzolla.pub" > authorization


Um pouquinho de segurança:

$ chmod 600 identification authorization

Enviando o authorization para o host2:

$ scp authorization dverzolla@host2:/home/dverzolla/.ssh/

Se quiser você pode apagar o authorization do host1.

Agora vamos testar e ver se tudo o que fizemos funcionou, basicamente basta você iniciar uma conexão ssh normal:

$ ssh dverzolla@host2

Se tudo estiver certo você será questionado pela passphrase, digite-a:

Passphrase for key "/home/dverzolla/.ssh/dverzolla" with comment "2048-bit dsa, dverzolla@host1, Tue Mar 29 2005 09:25:02 -0300":

Pronto, você deve estar conectado no host2. Se isto ocorreu podemos dar continuidade ao par ssh-agent + ssh-add. Se algum erro ocorreu, depure o ssh em verbose mode:

$ ssh -vvv

Veja qual erro ele está apresentando e corrija.

    Próxima página

Páginas do artigo
   1. Introdução
   2. ssh-agent + ssh-add
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Segurança com Iptables

Encriptando suas senhas de forma (mais) segura no Pidgin

Protegendo seu Linux de ataques de brute force via ssh

Analizando os logs do IPTables

ANDRAX - Pentest usando o Android

  
Comentários
[1] Comentário enviado por fernoliv em 28/07/2006 - 19:46h

Artigo show de bola David, parabéns!

[2] Comentário enviado por removido em 05/01/2007 - 01:19h

David,

podes me ajudar com um problema que estou enfrentado ?

Gerei a chave em minha máquina e coloquei a pública em 2 máquina do trabalho no diretório "~/.ssh". Em 1 funcionou corretamente, já em 2 me solicita a senha a todo momento.

Efetuando testes nas duas máquinas utilizando o modo de debug "-vvv" e analisando o log das 2 máquina achei a divergência neste ponto abaixo.

Máquina 1 (Que funciona):
-----------------------------------------------------
debug1: Trying private key: /home/felipe/.ssh/identity
debug3: no such identity: /home/felipe/.ssh/identity
debug1: Offering public key: /home/felipe/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp 36:62:9d:82:5d:e6:04:fa:d2:d7:c3:7f:c6:3f:fc:88
debug3: sign_and_send_pubkey
debug1: read PEM private key done: type RSA
-----------------------------------------------------

Máquina 2 (Com problema)
-----------------------------------------------------
debug1: Trying private key: /home/felipe/.ssh/identity
debug3: no such identity: /home/felipe/.ssh/identity
debug1: Offering public key: /home/felipe/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /home/felipe/.ssh/id_dsa
debug3: no such identity: /home/felipe/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup keyboard-interactive
debug3: remaining preferred: password
debug3: authmethod_is_enabled keyboard-interactive
-----------------------------------------------------

Sabe me dizer o que devo fazer para isto funcinar ?

Obrigado,

Felipe Cardoso Martins


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts