Cenário:
Host Servidor:
Sistema Operacional Ubuntu Server 14.04
Openssh-server instalado (Para instalar #apt-get install ssh)
Host Cliente
Sistema Operacional Ubuntu Desktop 15.04
O que será feito aqui é o seguinte:
1. A ideia é acessar um servidor a partir do seu computador sem digitar senha.
Pra funcionar é necessário modificar no servidor o arquivo /etc/ssh/sshd_config
para permitir acesso com usuário root.
Quando for enviado, desfaça a alteração.
1. Gere as Chaves Pública e Privada no Host Cliente
As chaves serão gravadas numa pasta oculta chamada .ssh dentro da pasta pessoal do usuário que estiver logado. O local poderá ser alterado durante a execução do comando, caso não queira alterar, pressione ENTER.
Quando for acessar será solicitado a "passphrase", marque na caixa de diálogo para salvar. Isso fará com que não seja solicitada nos próximos acessos enquanto a seção não seja encerrada, ou seja, feito o logoff.
Caso não apareça essa caixa de diálogo, use os comandos:
#ssh-add
#ssh-agent
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. A grande vantagem nisso tudo é digitar sua senha "passphase" apenas na primeira vez, e deixar o ssh-agent gerenciar as outras conexões.
Referências:
https://ivanix.wordpress.com/tag/ssh-agent/
https://help.ubuntu.com/community/SSH/OpenSSH/Keys
https://www.vivaolinux.com.br/artigo/Utilizando-SSH-com-metodo-de-autenticacao-publickey-+-sshagend-+-sshadd
Comandos úteis:
Se quiser evitar digitar "yes" no primeiro acesso ao servidor pra aceita a chave dele.
#ssh -oStrictHostKeyChecking=no usuário@IP_destino
Host Servidor:
Sistema Operacional Ubuntu Server 14.04
Openssh-server instalado (Para instalar #apt-get install ssh)
Host Cliente
Sistema Operacional Ubuntu Desktop 15.04
O que será feito aqui é o seguinte:
1. A ideia é acessar um servidor a partir do seu computador sem digitar senha.
2. Você vai gerar um par de chaves, pública e privada no seu computador.
3. Vai enviar a chave pública pro servidor.
3.1 Nesse envio utilizei o usuário/senha root do servidor de destino.Pra funcionar é necessário modificar no servidor o arquivo /etc/ssh/sshd_config
para permitir acesso com usuário root.
Quando for enviado, desfaça a alteração.
1. Gere as Chaves Pública e Privada no Host Cliente
As chaves serão gravadas numa pasta oculta chamada .ssh dentro da pasta pessoal do usuário que estiver logado. O local poderá ser alterado durante a execução do comando, caso não queira alterar, pressione ENTER.
#ssh-keygen -t rsa
Generating public/private rsa key pair.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuário/.ssh/id_rsa): NOVO_LOCAL ou ENTER
Enter passphrase (empty for no passphrase): SENHA PARA A CHAVE PRIVADA
Enter same passphrase again: SENHA PARA A CHAVE PRIVADA
Your identification has been saved in /home/usuário/.ssh/id_rsa.
Your public key has been saved in /home/usuário/.ssh/id_rsa.pub.
Nota1: O padrão de chave é 2048 bits. Você pode aumentar para 4096 bits com -b 4096 para torna mais difícil a quebrar da chave por métodos de força bruta.
2. Envie a Chave Pública do Host Cliente para o Host Servidor
Envie a chave com o comando:
#ssh-copy-id usuário_no_servidor@IP_Destino
Your public key has been saved in /home/usuário/.ssh/id_rsa.pub.
Nota1: O padrão de chave é 2048 bits. Você pode aumentar para 4096 bits com -b 4096 para torna mais difícil a quebrar da chave por métodos de força bruta.
ssh-keygen -t rsa -b 4096
2. Envie a Chave Pública do Host Cliente para o Host Servidor
Normalmente o acesso root não é permitido em servidores, por questões de segurança, caso queira acessar, utilizando o usuário ROOT do Servidor, terá que editar o arquivo /etc/ssh/sshd_config e alterar a linha "PermitRootLogin without-password" para "PermitRootLogin yes". Permitindo assim, o envio da chave pública com o usuário root.
Reinicie o serviço SSH:
#service ssh restart
Depois do envio desfaça a alteração e reinicie o serviço SSH.
Envie a chave com o comando:
#ssh-copy-id usuário_no_servidor@IP_Destino
Quando for acessar será solicitado a "passphrase", marque na caixa de diálogo para salvar. Isso fará com que não seja solicitada nos próximos acessos enquanto a seção não seja encerrada, ou seja, feito o logoff.
Caso não apareça essa caixa de diálogo, use os comandos:
#ssh-add
#ssh-agent
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. A grande vantagem nisso tudo é digitar sua senha "passphase" apenas na primeira vez, e deixar o ssh-agent gerenciar as outras conexões.
Referências:
https://ivanix.wordpress.com/tag/ssh-agent/
https://www.vivaolinux.com.br/artigo/Utilizando-SSH-com-metodo-de-autenticacao-publickey-+-sshagend-+-sshadd
Comandos úteis:
Se quiser evitar digitar "yes" no primeiro acesso ao servidor pra aceita a chave dele.
#ssh -oStrictHostKeyChecking=no usuário@IP_destino
Se quiser evitar digitar a senha após o comando, instale o pacote "sshpass".
#sshpass -p 'SENHA' ssh usuário@IP_destino
Busca local da chave do destino que foi aceita.
#ssh-keyscan -H IP_Destino
#ssh-keyscan -H IP_Destino
Remove localmente a chave do destino que foi aceita.
#ssh-keygen -R IP_Destino
#ssh-keygen -R IP_Destino