GNU/Linux >> Znalost Linux >  >> Linux

Jak zajistit, aby sdílené klíče .ssh/authorized_keys a sudo spolupracovaly?

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í.


Linux
  1. Jak povolit SFTP a zakázat SSH?

  2. Jak zajistit, aby trvalé odkazy WordPress fungovaly v Nginx

  3. Jak fungují vnitřnosti sudo?

  1. Jak zpřístupnit sdílený adresář pomocí Sftp?

  2. Ssh – Jak funguje Tcp-keepalive v Ssh?

  3. Jak vyrobit a aplikovat SVN patch?

  1. Jak sudo a nohup spolupracovat

  2. SSH s autorizovanými klíči do systému Ubuntu se zašifrovaným homedir?

  3. Jak mohu udělat sudo session hodinu a ne pár minut v Ubuntu 10.04?