SSH sem senha

ssh_sem_senha-1

Sei muito bem que existem diversos textos pela Internet sobre este assunto mas acontece que eu precisava atualizar algo que escrevi e que ficou muito bastante confuso — aliás, se você escreveu e precisou reler para compreender, reescreva pois deve estar uma porcaria.

O problema

Você precisa que um usuário, o “user1”, de um  computador específico, o “host3”, acesse remotamente um outro computador, o “host4” na conta de outro usuário, o “user2”:

ssh_sem_senha-2

Basicamente o que você quer fazer é:

user1@host3:~$ ssh user2@host4

Mas não quer passar pela etapa da digitação da senha para autenticar o usuário, sei lá, é script que rodará automaticamente, ou não quer divulgar a senha deste usuário para quem precisa fazer o acesso etc.

A solução

É mais simples do que aparenta, a primeira coisa é criar as chaves do host que você usará para fazer o acesso (o local):

user1@host3:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user1@host3
The key's randomart image is:
+---[RSA 2048]----+
...

Pressione «Enter» nas três perguntas que serão feitas — nome do arquivo da chave , passphrase e a repetição da passphrase ; uma senha alternativa, deixá-la em branco faz o SSH conectar sem sem pedir a digitação de senha).

Com as chaves geradas, e envie a chave pública para quem/onde quero acessar (o remoto):

user1@host3:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub user2@host4
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you
are prompted now it is to install the new keys
Password: ← digite a senha aqui e pela última vez

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user2@host4'"
and check to make sure that only the key(s) you wanted were added.

Mas será que funciona?

user1@host3:~$ ssh user2@host4
Agent admitted failure to sign using the key.
user2@host4's password: _

Deu erro! Que ocorres? Bem, de acordo a página de ajuda do GitHub sobre o assunto, é algo que pode acontecer em raras circunstâncias (pois é, e aconteceu!) mas com solução bem simples. Basta executar o ssh-add uma única vez e o problema se resolve.

user1@host3:~$ ssh-add 
Identity added: /home/user1/.ssh/id_rsa (rsa w/o comment)
user1@host3:~$ ssh user2@host4
Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-31-generic x86_64)
...
user2@host4:~$ _

E pronto, um texto bem mais simples que meu original, mais legível e, claro, bem mais útil agora que se tornou público! 😀


Este texto era originalmente uma tradução livre do SSH login without password do Mathias Kettner, na atualização usei como referência o 3 Steps to Perform SSH Login Without Password Using ssh-keygen & ssh-copy-id do Ramesh Natarajan, o material do GitHub sobre o ssh-add e os desenhos são de minha autoria mesmo.

Anúncios

2 comentários sobre “SSH sem senha

  1. Pingback: Autenticando no Git com SSH | giovannireisnunes

  2. Pingback: Cluster com Docker Swarm e RPi | giovannireisnunes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s