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.374 ]

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

SELinux na prática

A mitologia da imunidade a vírus no Linux

Enviando alertas do Snort por SMS

Como fazer: chroot SSH (SSH mais seguro)

Segurança com Iptables

  
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