ssh com multiplas chaves no osx
Uma das formas mais interessantes, práticas e seguras de acessar um host por ssh é fazer isto através de chaves, o processo de configuração de chaves é rápido e eficiente, contudo, muita gente tem dúvida de como utilizar múltiplas chaves, abaixo vou mostrar como fazer isto.
1. Gerando chaves
Estou utilizando OSX Mavericks para esse exemplo. Abra seu terminal para começarmos a gerar a primeira chave, por exemplo para o provedor dreamhost.
ssh-keygen
Digite o local e nome da chave quando consultado
/Users/gutocarvalho/.ssh/dreamhost
Especifique uma senha em formato de frase (passphrase), não use senhas em branco.
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/gutocarvalho/.ssh/id_rsa): /Users/gutocarvalho/.ssh/dreamhost
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/gutocarvalho/.ssh/dreamhost.
Your public key has been saved in /Users/gutocarvalho/.ssh/dreamhost.pub.
The key fingerprint is:
3a:21:f4:9b:12:6c:0f:4f:87:d7:ce:1a:f0:e3:2b:b2 gutocarvalho@kaiten.local
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . |
| o . . . |
| * * S . |
| . B X o |
| . B + o |
| ...o + |
| Eo .+. |
+-----------------+
Agora vamos criar uma segunda chave para outro provedor, por exemplo digitalocean.
ssh-keygen
Digite o local e nome da chave quando consultado
/Users/gutocarvalho/.ssh/digitalocean
Especifique uma senha em formato de frase, não use senhas em branco.
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/gutocarvalho/.ssh/id_rsa): /Users/gutocarvalho/.ssh/digitalocean
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/gutocarvalho/.ssh/digitalocean.
Your public key has been saved in /Users/gutocarvalho/.ssh/digitalocean.pub.
The key fingerprint is:
a0:34:03:59:c5:59:12:13:af:85:a3:1c:eb:18:08:f0 gutocarvalho@kaiten.local
The key's randomart image is:
+--[ RSA 2048]----+
|. .o.o*=. |
|.... o= |
|. E = + o |
|.. o B = |
|. . = . S |
| + |
| . . |
| |
| |
+-----------------+
2. Configurando acessos
Maravilha, as duas chaves foram criadas, agora vamos criar o arquivo config dentro de /Users/gutocarvalho/.ssh em seu OSX, é neste arquivo que vamos configurar qual chave deve ser utilizada para cada host, veja o exemplo.
Host dreamhost
HostName gutocarvalho.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/dreamhost
User gutocarvalho
Host digitalocean
HostName mesintogravida.com.br
PreferredAuthentications publickey
IdentityFile ~/.ssh/digitalocean
User gutocarvalho
3. Autorizando acessos
Agora acesse o host de destino gutocarvalho.net e adicione o conteúdo do arquivo gutocarvalho.pub - que foi criado no OSX - ao arquivo /home/gutocarvalho/.ssh/authorized_keys do servidor remoto (dreamhost), o conteúdo da chave púbica será algo assim
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOTGdNlaMrOtUTpKsWyhM3h0Hw4Kym2mtIO95pxZN8JKCMHTb9xn2ZqA87wTPDHXYQVDNYHyZMiRrTX+dYQcGx+d+W9qZncxWPZtrqOyxWIT9WrTn4M40nFTB0tyBD+0XnD8WZdef5L+/wueRqC+T8zLgZb6peHSkGWuj2tdnf/LcGzZ7CgK6r0yVSUFxCEFr9wtYx0rtV0rovTwHJVpvv8jbA9N8QFfA7WCv/Xtz3UpJL1tuj0/IN+VPXyHYKU9u9fq28U1lU3MfPR3nVayQyh+Ddp6ZzKLW2PwmSRdth/6BTYSdQ+9OiwQxYj3A+QsXcJ3M6UNPTuOcLFuTTvFJJ gutocarvalho@domain
Depois acesse o segundo host de destino (digitalocean), aqui no exemplo mesintogravida.com.br e faça o mesmo procedimento, desta vez com o conteúdo do arquivo mesintogravida.pub criado no OSX.
Se o arquivo já existir, apenas acrescente a linha.
Após criar ou modificar o arquivo, inserindo a chave pública, deslogue do servidor.
4. Testando acessos
Agora vamos tentar acessar o servidor
ssh dreamhost
Se tudo der certo o OSX vai pedir a senha da chave, digite a senha e ela será salva no chaveiro (keychain), uma vez no keychain, a senha não será solicitada em futuros acessos.
Last login: Sun Jun 8 03:34:36 2014 from 191.176.xxx.xxx
[gutocarvalho.net]$
mais um teste
ssh digitalocean
Acompanhe a saída
Last login: Sun Jun 8 05:34:36 2014 from 191.176.xxx.xxx
[mesintogravida.com.br]$
Beleza, funcionou perfeitamente.
5. Conferindo Permissões
As chaves privadas devem ter permissão 600.
As chaves públicas devem ter permissão 644.
O arquivo authorized_keys deve ter permissão 600.
Se as permissões não estiverem corretas nestes arquivos o acesso por chaves não vai funcionar.