SSH: Configurando Relação de Confiança Entre os Hosts
Autor: Badtux's Blog | Publicado: 2011-11-11T10:41:00-02:00

Enquanto estou preparando a última parte do tutorial sobre o Mail Server com Postfix e outras ferramentas, irei postar um procedimento simples, mas que muitos ainda não conhecem, ou pelo menos, não sabem fazer funcionar. Vamos falar sobre SSH, mas especificamente, como criar a relação de confiança entre dois hosts. 

Lembrando que isso facilita a vida , porém acaba se tornando uma brecha de segurança (eu não vejo tanto problema assim). Uma vez que você não precisará mais utilizar senha para conectar via SSH no host onde você estabeleceu a relação de confiança. 

Vamos ao que interessa! Vamos fazer esse procedimento baseado no Debian, por isso é importante ter o pacote do openssh instalado nas máquinas. 


# apt-get install openssh-server 
Em nosso cenário, vamos ter dois hosts, um chamado giropops e outro chamado girus. A ideia é conectar a partir da giropops com destino à girus. 

Primeiro passo é criar a chave pública que é necessaria para a conexão sem a utilização da senha, pois o ssh irá utilizar essa chave no lugar da senha. Você pode utilizar tanto chave .DSA como .RSA, a minha preferencia é pela chave .DSA, ela foi desenvolvida pela NSA e é bastante segura, inclusive mais segura que a .RSA. Porém um pouco mais lenta, mas nada absurdo!



No exemplo, vamos utilizar chaves .DSA. Para cria-la, basta executar o comando abaixo:


# root@giropops:~# ssh-keygen -t dsa&nbsp;

Generating public/private dsa key pair.Enter file in which to save the key (/root/.ssh/id_dsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_dsa.Your public key has been saved in /root/.ssh/id_dsa.pub.The key fingerprint is:53:99:9e:1e:73:4f:dd:03:57:c7:60:1e:01:50:ea:46 root@giropopsThe key's randomart image is:+--[ DSA 1024]----+| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.oo.=+o|| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + o .+|| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;E &nbsp;... || &nbsp; &nbsp; &nbsp; &nbsp; = . &nbsp;o..|| &nbsp; &nbsp; &nbsp; &nbsp;S B . ..o|| &nbsp; &nbsp; &nbsp; &nbsp; + + o &nbsp;.|| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;. &nbsp; . &nbsp;|| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; || &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |+-----------------+


Quando pedir "Enter file in which to save the key (/root/.ssh/id_dsa):"&nbsp;deixe o local padrão mesmo, que é dentro do diretório home&nbsp;do usuário com que você vai conectar no host remoto.

Como a ideia é conectar sem precisar utilizar qualquer senha, no momento onde ele pede "Enter passphrase"&nbsp;não defina qualquer senha, deixe em branco!



Você pode verificar as chaves criadas no diretório home do usuário:


root@giropops:~# ls -lha /root/.ssh/

&nbsp;total 28Kdrwxrwxrwx &nbsp;2 root root 4,0K Nov 11 10:48 .drwxrwxrwx 30 root root 4,0K Nov 11 10:14 ..-rw------- &nbsp;1 root root &nbsp;672 Nov 11 10:48 id_dsa-rw-r--r-- &nbsp;1 root root &nbsp;606 Nov 11 10:48 id_dsa.pub-rwxrwxrwx &nbsp;1 root root &nbsp;11K Nov 11 09:59 known_hosts


Após gerar a chave, você tem que transferir a chave para o host remoto, no caso, o host&nbsp;girus. Para isso faça:



root@giropops:~# ssh-copy-id -i /root/.ssh/id_dsa.pub root@192.168.65.128


root@192.168.65.128's password:&nbsp;



Now try logging into the machine, with "ssh 'root@192.168.65.128'", and check in:



&nbsp; .ssh/authorized_keys



to make sure we haven't added extra keys that you weren't expecting.






Com isso, ele envio o arquivo&nbsp;/root/.ssh/id_dsa.pub para o host girus, e inclusive já envia o arquivo modificando o nome dele no destino (girus) para&nbsp;.ssh/authorized_keys


root@girus:~/.ssh# ls -lha&nbsp;&nbsp;

total 16K
drwx------ 2 root root 4.0K Nov 11 07:57 .
drwx------ 4 root root 4.0K Nov 11 07:57 ..
-rw------- 1 root root &nbsp;606 Nov 11 07:57 authorized_keys
-rw-r--r-- 1 root root &nbsp;442 Nov 11 07:57 known_hosts
&nbsp;Com isso, já conseguimos conectar no host girus&nbsp;através da máquina giropops&nbsp;sem a necessidade de senha!


root@giropops:~# ssh 192.168.65.128&nbsp;

Linux debian 2.6.32-5-686 #1 SMP Mon Jun 13 04:13:06 UTC 2011 i686The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Fri Nov 11 06:59:01 2011 from 192.168.65.1&nbsp;

root@girus:~#&nbsp;




Lembrando com essa configuração somente o usuário root conseguirá conectar sem a necessidade da senha. Para que outros usuários também consigam, é necessário realizar o mesmo procedimento para cada usuário!



Aproveite para seguir o blog e divulgar para os amigos!



Então é isso, simples como voar! Até o&nbsp;próximo&nbsp;tutorial!!!



Parte1 Mail Server - Postfix + PostfixAdmin + Dovecot + SpamAssassin +MySQL + RoundCube + MailScanner
Parte2 Mail Server - Postfix + PostfixAdmin + Dovecot + SpamAssassin +MySQL + RoundCube + MailScanner