GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie können Shared Keys .ssh/authorized_keys und sudo zusammenarbeiten?

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.


Linux
  1. Was ist ein Webserver und wie funktioniert ein Webserver?

  2. So richten Sie SSH-Schlüssel ein

  3. Wie lässt man SFTP zu und verbietet SSH?

  4. Wie man WordPress-Permalinks in Nginx zum Laufen bringt

  5. Ssh – Wie funktioniert TCP-Keepalive in Ssh?

Was ist ein Makefile und wie funktioniert es?

Linux-Grundlagen:So erstellen und installieren Sie SSH-Schlüssel auf der Shell

sudo und nohup zusammenarbeiten lassen

SSH mit authorisierten_Schlüsseln zu einem Ubuntu-System mit verschlüsseltem Homedir?

Wie kann ich in Ubuntu 10.04 eine Sudo-Sitzung zu einer Stunde und nicht zu wenigen Minuten machen?

ssh-Schlüssel ssh-agent bash und ssh-add