Portál AbcLinuxu, 29. dubna 2024 20:48

ssh-agent a "automatické" zadání hesla (pam_ssh)

17.4.2006 21:41 | Přečteno: 2347× | Linux

Předpokládám, že SSH znáte všichni, většina z vás asi bude vědět i o programu ssh-agent. Pokud používáte hesla na své SSH klíče, tak vás určitě nebaví při každém přihlášení ke vzdálené mašině znova a znova ťukat heslo. Spousta lidí to "vyřešila" tak, že prostě u SSH klíče to heslo zrušili. Lepší řešení je použít program ssh-agent.

Tento program způsobí to, že heslo zadáte pouze jednou a potom to pro uživatele vypadá jako by se používal klíč bez hesla. Na notebooku, na kterém většinou pracuji, jsem se dřív přihlašoval do textu, přimountoval zašifrovaný disk a pak spustil Xka. V ~/.xinitrc jsem míval něco takovéhleho:

export SSH_ASKPASS=ssh-askpass
eval `ssh-agent -s`
ssh-add < /dev/null

Nedávno jsem notebook přeinstaloval a zrušil šifrovaný HDD, proto jsem začal bootovat do grafického režimu, konkrétně používám gdm. V novém systému mi tak nějak scházel program ssh-askpass, ale za to je součástí pam_ssh. Používám pro ssh klíč stejné heslo jako do systému, proto jsem se rozhodl ho využít.

Modul pam_ssh umí jednu prima věc, při jeho použití se automaticky nastartuje ssh-agent a načte klíč už během přihlašování do systému, takže nemusím heslo vypisovat znovu po náběhu windowmakera.

Následující postup je platný pro Fedoru 5, pro ostatní distribuce si ho zřemě budete muset trochu přiohnout.

Vytvořte soubor /etc/pam.d/system-auth-ssh:

auth        required      pam_env.so
auth        sufficient    pam_ssh.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     required      pam_limits.so
session     optional      pam_ssh.so
session     required      pam_unix.so

vytvořte soubor /etc/pam.d/gdm-ssh:

auth       required     pam_env.so
auth       include      system-auth-ssh
account    required     pam_nologin.so
account    include      system-auth-ssh
password   include      system-auth-ssh
session    include      system-auth-ssh
session    required     pam_loginuid.so
session    optional     pam_console.so

Dalším krokem je přejmenování souboru /etc/pam.d/gdm na něco jiného a vytvoření symlinku:

ln -s /etc/pam.d/gdm-ssh /etc/pam.d/gdm

Při použití pam_ssh se změní výzva na zadání hesla v dialogu gdm (nebo pokud upravíte soubor /etc/pam.d/login tak i v textové konzoli) na SSH passphrase:.

Pokud vám něco nefunguje, tak se kokněte do logů jestli to tam nezvrací nějaké chyby.

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (4) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

17.4.2006 22:35 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: ssh-agent a "automatické" zadání hesla (pam_ssh)
Odpovědět | Sbalit | Link | Blokovat | Admin
Pak ať někdo tvrdí, že blogy na abclinuxu jsou k ničemu. Super věc, před časem jsem si dost hrál s ssh a tento fígl mě skutečně ani nenapadl. Jdu si měnit heslo na passfrázi a tento blogpost si dávám do záložek. Moc díky!
When your hammer is C++, everything begins to look like a thumb.
17.4.2006 23:27 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: ssh-agent a "automatické" zadání hesla (pam_ssh)
Odpovědět | Sbalit | Link | Blokovat | Admin
Z clanku jsem nepochopil, jak to funguje (co provadi autentizaci a proti cemu), takze tady je popis z domovske stranky projektu:
This PAM module provides single sign-on behavior for SSH. The user types an SSH passphrase when logging in (probably to GDM, KDM, or XDM) and is authenticated if the passphrase successfully decrypts the user's SSH private key. In the PAM session phase, an ssh-agent process is started and keys are added. For the entire session, the user can SSH to other hosts that accept key authentication without typing any passwords.
Tudiz podstatna informace je, ze autentizace se dela na zaklade toho, ze poskytnuta passphrase umi rozsifrovat klic.

BTW, nejsem si jisty, jestli je nebezpecnejsi mit rozsifrovany ssh klic porad v pameti pocitace (doufam, ze prislusna oblast pameti je chranena proti odswapovani) nebo tu passphrase zadavat porad dokola (trebas po time-outu)?
17.4.2006 23:46 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: ssh-agent a "automatické" zadání hesla (pam_ssh)
Z clanku jsem nepochopil, jak to funguje (co provadi autentizaci a proti cemu)...

Popisovat jak to funguje nebylo cílem, jen jsem chtěl upozornit na pam_ssh. Podrobnosti ať si najde každý sám, od toho je přece dokumentace.
-- Nezdar není hanbou, hanbou je strach z pokusu.
19.4.2006 17:21 Jan Kundrát (jkt) | skóre: 27 | blog: jkt | Praha - Bohnice
Rozbalit Rozbalit vše Re: ssh-agent a "automatické" zadání hesla (pam_ssh)
Odpovědět | Sbalit | Link | Blokovat | Admin
No ja nevim, ale ja osobne to pouzivam tak, ze se stale primarne overuje oproti shadow a teprve pokud to projde, zkusi se rozsifrovat i SSH klic. Ma to tu vyhodu, ze uzivatele, co maj svuj SSH klic bez hesla, se budou muset prihlasit svym "systemovym" heslem. Cili heslo z /etc/shadow je porad rozhodujici a pokud se s pam_ssh cokoliv stane, vubec to nevadi.

Jo a davam to do /etc/pam.d/system-auth, cili se to pouziva i pri loginu do konzole etc...
auth       required     pam_env.so
auth       required     pam_unix.so likeauth nullok
auth       optional     pam_ssh.so try_first_pass
Jinak pokud pouzivas originalni verzi pam_ssh a ne tu opatchovanou Debianem, tak by se ti mohlo hodit odstranovani mrtvejch souboru po havarii...
Blésmrt

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.