Was Sie tun möchten, ist möglich, erfordert jedoch einige Erfahrung, da Sie ein PAM-Modul namens pam-ssh-agent-auth kompilieren müssen .
Der Vorgang ist recht einfach:
$ 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
Bearbeiten Sie die sudo-Konfiguration:
$ sudo visudo
Fügen Sie Folgendes hinzu:
Defaults env_keep += SSH_AUTH_SOCK
Fahren Sie fort, indem Sie die sudo PAM-Einstellungen ändern:
$ sudo vi /etc/pam.d/sudo
Fügen Sie hinzu (direkt über den @include-Zeilen):
**auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys**
@include common-auth
@include common-account
ssh
und sudo
nichts miteinander zu tun haben. Einrichten eines ssh
Authentifizierungsmethode wird nichts für sudo
tun . sudo
wird einen ssh
nicht verstehen Passwort.
passwd -l
soll das Konto eines Benutzers sperren, sodass er sich nicht mehr per Passwort authentifizieren kann. Das ist so ziemlich das Gegenteil von dem, was Sie wollen, nämlich Benutzer ohne Passwort authentifizieren zu lassen.
Ich denke, was Sie wollen, ist die NOPASSWD
Option in Ihrem sudoers
Datei.
(PS, es gibt keinen Grund, einen cd
auszuführen Befehl mit sudo
. cd
wird nicht an übergeordnete Prozesse weitergegeben, sobald der sudo
verlassen, sind Sie wieder da, wo Sie angefangen haben.)
Bearbeiten: Sie sagen immer wieder, dass Sie das Kontopasswort sperren möchten und möchten, dass sudo öffentliche/private Schlüssel versteht. Tut mir leid, sudo wird keine SSH-Schlüssel verwenden. Es ist nicht ssh. Wenn Sie nicht möchten, dass sich Benutzer mit ihren Passwörtern anmelden können, besteht die Antwort meiner Meinung nach darin, die ssh-Passwortauthentifizierung zu deaktivieren und nicht das Konto zu sperren. Dann können Sie ein Passwort für die Benutzer behalten, das sie für sudo verwenden können, nachdem sie sich über ssh-authorized_keys angemeldet haben.
Die Antwort von Andre de Miranda bietet eine nette Lösung mit pam_ssh_agent_auth, aber Teile sind veraltet. Besonders die /etc/pam.d/sudo
Anweisungen bei Verwendung vieler aktueller Linux-Versionen.
Wenn Sie Ubuntu 12.04 Precision ausführen, habe ich den Prozess tatsächlich vereinfacht, indem ich einen pam_ssh_agent_auth-Build aus einem ppa bereitgestellt habe:ppa:cpick/pam-ssh-agent-auth.
Sie können das Paket installieren, indem Sie Folgendes ausführen:
sudo add-apt-repository ppa:cpick/pam-ssh-agent-auth
sudo apt-get install pam-ssh-agent-auth
Wenn Sie dieses PAM-Modul nach der Installation mit sudo verwenden möchten, müssen Sie die Einstellungen und die PAM-Konfiguration von sudo konfigurieren. In Ubuntu 12.04 genau können Sie dies tun, indem Sie die folgenden zwei Dateien erstellen:
/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
Wenn Sie chef verwenden, kann der obige Prozess mit meinem Kochbuch automatisiert werden, das an einem der beiden folgenden Orte zu finden ist:
https://github.com/cpick/pam-ssh-agent-auth
http://community.opscode.com/cookbooks/pam-ssh-agent-auth.
Der files
des Kochbuchs Verzeichnis enthält den /etc/pam.d/sudo
und /etc/sudoers.d/pam-ssh-agent-auth
oben beschriebenen Dateien, die mit Ubuntu 12.04 präzise funktionieren und ein hilfreicher Ausgangspunkt bei der Verwendung anderer Versionen/Distributionen sein sollten.