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.