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.
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.
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.
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.pubCom 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.