May 07 2009

SSH autentizace pomocí klíčů bez hesla

Tag: LinuxJens @ 20:00

Tento článek v rychlosti popisuje SSH autentizaci mezi jednotlivými stroji pomocí dvojice soukromý/veřejný klíč. Nejedná se o nic nového ani převratného, akorát to vždycky zapomenu a tak si to raději napíšu sem, ať vím, kde hledat příště.

Scénář

Dva stroje, jeden franta (192.168.1.1) a druhý hubert (192.168.1.3) a chci se mezi nimi připojovat jednoduše tak, že nepotřebuji žádné heslo — tedy stačí zadat pouze franta:~# ssh hubert a jsem tam (klíče kopíruji pouze pro uživatele root na obou strojích). Stejně tak se chci připojit z huberta na frantu. Žádná parafráze, žádné heslo.

Předpoklad

Nainstalovaný SSH server na obou strojích:

# apt-get install ssh

a v souboru /etc/ssh/sshd_config povolenu autentizaci pomocí klíčů (je to defautlní nastavení Debianu):

RSAAuthentication yes
PubkeyAuthentication yes

Postup

  1. Vytvoření dvojice klíčů na obou strojích, nejdříve hubert (na pořadí nezáleží):
    hubert:~# ssh-keygen
    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:
    xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@hubert
    The key's randomart image is:
    ...
    
    a franta to samé, na všechny otázky stačí stisknout <enter>
  2. Přenesení veřejných klíčů jednotlivých strojů na jejich protějšky:
    Klíč z huberta na frantu:

    hubert:~# scp .ssh/id_rsa.pub root@franta:~/hubert_rsa.pub
    root@franta's password:
    id_rsa.pub                                                                  100%  393     0.4KB/s   00:00
    
    a klíč z franty na huberta to samé:
    franta:~# scp .ssh/id_rsa.pub root@hubert:~/franta_rsa.pub
    root@hubert's password:
    id_rsa.pub                                                                  100%  393     0.4KB/s   00:00
    
    Při tomto přesunu budete naposledy potřebovat autentizaci pomocí hesla.
  3. Zapsání veřejného klíče huberta do autentizačního souboru franty a naopak:
    franta:~# cat hubert_rsa.pub >> .ssh/authorized_keys
    hubert:~# cat franta_rsa.pub >> .ssh/authorized_keys

Závěr

V tuto chvíli by již autentizace měla vzájemně fungovat, takže stačí jen vyzkoušet:

franta:~# ssh hubert
Linux hubert 2.6.26-2-amd64 #1 SMP Fri Mar 27 04:02:59 UTC 2009 x86_64
...
hubert:~#

Stejně tak, jako přihlašování přes SSH bude fungovat bez hesla i kopírování přes SCP.