Mais seguro do que utilizar uma boa password é simplesmente não utilizar nenhuma password! O acesso remoto a um sistema linux via ssh e sem password é possível gerando um par de chaves RSA.

Configuração

A configuração é processada em duas fases:

  • Numa primeira fase é gerado o par de chaves pública e privada.
  • Em seguida a parte pública da chave é instalada no ou nos sistemas remotos.

Configuração local

Durante a geração do par de chaves é pedida uma password para proteção das chaves. Esta password é de entrada facultativa: case seja inserida será sempre pedida ao tentar aceder ao sistema remoto. No nosso caso iremos optar por não usar a password.

root@laptop:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
52:70:59:ce:62:6f:3e:3b:58:e3:ed:b5:35:3c:76:9f root@laptop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|                .|
|        S   o .oo|
|       + + . =..+|
|      . + . o Boo|
|         o . *oEo|
|          . ...o |
+-----------------+

No final deste processo serão gerados 2 ficheiros na diretoria ~/.ssh: a chave publica e a chave privada.

Ficheiro Conteúdo
id_rsa A chave privada: esta chave deve permanacer no sistema local e NUNCA deverá ser partilhada ou divulgada.
id_rsa.pub A chave pública: esta chave deverá ser instalada nos sistemas remotos onde se pretende aceder sem password.

Configuração remota

O primeiro passo da configuração consiste em copiar a chave pública do sistema local para o sistema remoto. A chave pública será guardada no sistema remoto em ~/.ssh/authorized_keys.

root@laptop:~# ssh-copy-id root@192.168.1.100
root@192.168.1.100's password:
Now try logging into the machine, with "ssh 'root@192.168.1.100'", and check in:

~/.ssh/authorized_keys

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

A restante configuração é efetuada no sistema remoto. Em primeiro lugar deveremos aceder remotamente, o que por agora ainda requer a passowrd:

root@laptop:~# ssh 192.168.1.100
root@192.168.1.100's password:
Linux server 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Jun  9 14:12:28 2014 from laptop.home.lan
root@server:~$

A configuração do lado remoto deverá ser alterada de modo a permitir logins sem passwords, ou seja, apenas com as chaves. Para isso deve substituir a opção PermitRootLogin no pela opção PermitRootLogin without-password no ficheiro /etc/ssh/sshd_config:

# File: /etc/ssh/sshd_config
#[...]
# Authentication:
LoginGraceTime 120
# PermitRootLogin no
PermitRootLogin without-password
StrictModes yes
#[...]

Reiniciar o serviço:

root@server:~# /etc/init.d/ssh restart

Verificação

Caso a configuração esteja correta, será possível aceder ao sistema remoto sem que seja pedida a password:

root@laptop:~# ssh 192.168.1.100
Linux server 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Jun  9 14:50:41 2014 from laptop.home.lan
root@server:~#

Referências