Co chcete udělat, je možné, ale bude to vyžadovat určité zkušenosti, protože budete muset zkompilovat modul PAM nazvaný pam-ssh-agent-auth .
Postup je poměrně jednoduchý:
$ sudo aptitude install libssl-dev libpam0g-dev build-essential checkinstall
$ wget "http://downloads.sourceforge.net/project/pamsshagentauth/pam_ssh_agent_auth/v0.9.3/pam_ssh_agent_auth-0.9.3.tar.bz2"
$ tar -xjvf pam_ssh_agent_auth-0.9.3.tar.bz2
$ cd pam_ssh_agent_auth-0.9.3
$ ./configure --libexecdir=/lib/security --with-mantype=man
$ make
$ sudo checkinstall
Upravte konfiguraci sudo:
$ sudo visudo
Přidejte následující:
Defaults env_keep += SSH_AUTH_SOCK
Pokračujte změnou nastavení sudo PAM:
$ sudo vi /etc/pam.d/sudo
Přidejte (těsně nad řádky @include):
**auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys**
@include common-auth
@include common-account
ssh
a sudo
nemají spolu nic společného. Nastavení ssh
autentizační metoda neudělá nic pro sudo
. sudo
nebude rozumět ssh
heslo.
passwd -l
je určen k uzamčení uživatelského účtu, aby se již nemohl autentizovat heslem. To je do značné míry opak toho, co chcete, což je nechat uživatele ověřit se bez hesla.
Myslím, že to, co chcete, je NOPASSWD
možnost ve vašem sudoers
soubor.
(PS, není důvod používat cd
příkaz s sudo
. cd
se nešíří do nadřazených procesů, takže jakmile sudo
ukončíte, jste zpět tam, kde jste začali.)
Upravit: Pořád říkáte, že chcete zamknout heslo účtu a chcete, aby sudo rozumělo veřejným/soukromým klíčům. Je nám líto, sudo nebude používat ssh klíče. Není to ssh. Pokud nechcete, aby se uživatelé mohli přihlašovat pomocí svých hesel, myslím, že odpovědí je deaktivovat ověřování heslem ssh, nikoli zamknout účet. Poté můžete uživatelům ponechat heslo, které mohou použít k sudo poté, co se přihlásí pomocí ssh author_keys.
Odpověď Andre de Mirandy poskytuje pěkné řešení pomocí pam_ssh_agent_auth, ale části jsou zastaralé. Zejména /etc/pam.d/sudo
pokyny při používání mnoha aktuálních verzí Linuxu.
Pokud používáte přesné Ubuntu 12.04, ve skutečnosti jsem proces zjednodušil poskytnutím sestavení pam_ssh_agent_auth z ppa:ppa:cpick/pam-ssh-agent-auth.
Balíček můžete nainstalovat spuštěním:
sudo add-apt-repository ppa:cpick/pam-ssh-agent-auth
sudo apt-get install pam-ssh-agent-auth
Po instalaci, pokud chcete používat tento modul PAM se sudo, budete muset nakonfigurovat nastavení sudo a konfiguraci PAM, v Ubuntu 12.04 přesné to můžete udělat vytvořením následujících dvou souborů:
/etc/sudoers.d/pam-ssh-agent-auth :
Defaults env_keep+="SSH_AUTH_SOCK"
/etc/pam.d/sudo :
ent#%PAM-1.0
auth required pam_env.so readenv=1 user_readenv=0
auth required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
@include common-auth
@include common-account
@include common-session-noninteractive
Pokud používáte šéfkuchaře, výše uvedený proces lze automatizovat pomocí mé kuchařky, kterou najdete na jednom z následujících dvou míst:
https://github.com/cpick/pam-ssh-agent-auth
http://community.opscode.com/cookbooks/pam-ssh-agent-auth.
Kuchařka má files
adresář obsahuje /etc/pam.d/sudo
a /etc/sudoers.d/pam-ssh-agent-auth
soubory popsané výše, které pracují s Ubuntu 12.04 precizně a měly by být užitečným výchozím bodem při používání jiných verzí/distribucí.