Následující možnosti ověření uživatele platí pro služby založené na SSH - tj. SSH, SCP, SFTP, rsync a SSHFS.
Nejjednodušší varianta, není třeba nic nastavovat, nutný je pouze účet v systému datových úložišť. Nevýhoda: při každém přístupu je vyžadováno heslo.
Pro použití této varianty je potřeba:
GSSAPIAuthentication yes GSSAPIDelegateCredentials yes
$ kinit user@EINFRA Password for user@EINFRA:
Přístup ke službám je pak možný bez hesla po dobu platnosti lístku:
$ ssh user@server ls -l total 12540 -rw-r--r-- 1 user storage 10485760 Jun 22 14:16 MB10.dat -rw-r--r-- 1 user storage 8388608 May 3 12:51 MB8.dat drwxr-xr-x 2 user storage 10 Jun 13 15:34 backup $
Platnost lístku je možné ověřit:
$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: user@EINFRA Valid starting Expires Service principal 07/04/12 13:26:22 07/05/12 13:26:19 krbtgt/EINFRA@EINFRA
V případě potřeby je možné lístek i odstranit:
$ kdestroy $ klist klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_1000)
Po nainstalování veřejné části RSA resp. DSA klíče do souboru ~/.ssh/authorized_keys, což provede systém Perun, je možný přístup bez hesla, s použitím soukromé části klíče jako identity.
Soukromou část klíče je velmi vhodné uchovávat zašifrovanou - chráněnou dostatečně silným heslem (tj. ne „tajneheslo“ z příkladu níže ;) ). Aby toto heslo nemuselo být opět zadáváno při každém přístupu, je možné ke klíči přistupovat nástrojem ssh-agent
, který heslo vyžaduje pouze jednou a pak už umožňuje přístup ke klíči bez zadávání hesla.
Příklad postupu pro vygenerování RSA páru soukromý/veřejný klíč, pokud žádný nemáte:
(místo xx budou hexadecimální čísla)
$ ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): tajneheslo Enter same passphrase again: tajneheslo Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@client-host
V tuto chvíli už by nemělo být při SSH spojení vyžadováno heslo účtu v uložišti, ale pouze heslo pro dešifrování SSH klíče (passphrase):
$ ssh user@sserver ls -l Enter passphrase for key '.ssh/id_rsa': tajneheslo total 12540 -rw-r--r-- 1 user storage 10485760 Jun 22 14:16 MB10.dat -rw-r--r-- 1 user storage 8388608 May 3 12:51 MB8.dat drwxr-xr-x 2 user storage 10 Jun 13 15:34 backup $
Pokud klíč nainstalujeme do běžícího procesu ssh-agent
:
$ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/user/.ssh/id_rsa: tajneheslo Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
tak již není vyžadováno žádné heslo:
$ ssh user@sserver ls -l total 12540 -rw-r--r-- 1 user storage 10485760 Jun 22 14:16 MB10.dat -rw-r--r-- 1 user storage 8388608 May 3 12:51 MB8.dat drwxr-xr-x 2 user storage 10 Jun 13 15:34 backup $
Klíč můžeme z procesu ssh-agent
v případě potřeby odebrat:
$ ssh-add -D All identities removed.
Proces ssh-agent
musí být během použití již spuštěný (v Linuxu ale často bývá spuštěn už při startu X-windows), případně ho můžeme spustit:
$ eval ``ssh-agent``
Více o nástroji ssh-agent
: