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.