Wie erstelle ich einen SSH-Schlüssel für einen anderen Benutzer?


89

Ich versuche, einen SSH-Schlüssel für einen anderen Benutzer zu erstellen. Ich bin als root angemeldet. Kann ich einfach die von ssh-keygen generierten Dateien bearbeiten und root auf den gewünschten Benutzer ändern?


5
Wenn Sie den Schlüssel für den Benutzer generieren, müssen Sie auch eine sichere Methode zum Abrufen des privaten Schlüssels und seiner Passphrase an den Benutzer haben. Viel besser, der Benutzer generiert den Schlüssel und schickt Ihnen dann einfach den öffentlichen Schlüssel per E-Mail.
User9517

Aber ist das nicht schwierig, wenn Sie keine Kennwortanmeldungen zulassen? Wenn ich nur einen Schlüssel habe und einen neuen Benutzer einrichte, kann er sich nicht anmelden, um seinen Schlüssel einzurichten.
LVLAaron

Antworten:


79

Sie können dies jedoch tun, indem Sie sich ssh-keygendaran erinnern, dass der private Schlüssel für den Benutzer privat sein soll. Achten Sie daher sehr darauf, ihn so sicher wie das Kennwort des Benutzers zu verwahren. Oder noch sicherer, da der Benutzer es wahrscheinlich nicht ändern muss, wenn er sich zum ersten Mal anmeldet.

ssh-keygen -f anythingErstellt zwei Dateien im aktuellen Verzeichnis. anything.pubist der öffentliche Schlüssel, den Sie ~/.ssh/authorized_keysauf jedem Zielserver an den Benutzer anhängen können .

Die andere gerade aufgerufene Datei anythingist der private Schlüssel und sollte daher für den Benutzer sicher gespeichert werden. Der Standardspeicherort wäre ~username/.ssh/id_rsa(hier benannt id_rsa, der Standard für RSA-Schlüssel ist). Denken Sie daran, dass das .sshVerzeichnis nur von dem Benutzer gelesen oder beschrieben werden kann und das Basisverzeichnis des Benutzers nur von dem Benutzer beschrieben werden kann. Ebenso müssen die Berechtigungen für den privaten Schlüssel eng sein: Lesen / Schreiben nur für den Benutzer, und das SSH-Verzeichnis und die private Schlüsseldatei müssen Eigentum des Benutzers sein.

Technisch könnte man den Schlüssel überall aufbewahren. Mit können ssh -i path/to/privatekeySie diesen Ort angeben, während Sie eine Verbindung herstellen. Auch hier sind ordnungsgemäße Inhaberschaft und Berechtigungen von entscheidender Bedeutung und ssh funktioniert nicht, wenn Sie nicht über die erforderlichen Berechtigungen verfügen.


4
+1 für den Ausdruck, dass es sich um einen privaten (!) Schlüssel handelt
mailq

51
Sie gehen davon aus, dass der Benutzer eine reale Person ist. Wenn die Anmeldung ein nicht interaktiver Benutzer ist, der zur Ausführung von Hilfsprogrammaufgaben verwendet wird (z. B. Ausführen von Maine-Skripten auf Remoteservern), würden Sie den Schlüssel für diesen Benutzer wahrscheinlich manuell generieren. Das hat natürlich seine eigenen Auswirkungen auf die Sicherheit, aber das ist eine andere Geschichte.
Rilindo

2
@Rilindo ssh -izu einem privaten Schlüssel für einen nicht privilegierten Prozess ist, wie ich mehr als einige automatisierte rsync-Sicherungsprozesse handhabe. :)
Shadur

9
Ich mag solche Antworten nicht, die sagen "das solltest du nicht tun", aber beantworte die Frage nicht. Während dies für den Kontext der ursprünglichen Frage richtig und hilfreich sein kann, haben andere Personen möglicherweise die gleiche Frage in einer anderen Situation. "ssh-Schlüssel sollten niemals für einen anderen Benutzer generiert werden": Das ist im einfachen Fall der Fall. Denken Sie zum Beispiel an mehrere Identitäten derselben physischen Person. Auf mehreren Systemen befinden sich möglicherweise mehrere Konten, von denen nicht alle das Generieren von Schlüsseln oder den angemessenen Schutz privater Schlüssel ermöglichen.
Gustave

usersoderuser's
Benutzer

135

Die SSH-Schlüssel enthalten keine Benutzerinformationen .

Das letzte Feld in einem öffentlichen Schlüssel ist ein Kommentar (und kann durch Ausführen des folgenden Befehls geändert werden ssh-keygen -C newcomment).

Sie müssen nichts Besonderes tun, um einen Schlüssel für einen anderen Benutzer zu erstellen. Legen Sie ihn einfach an der richtigen Stelle ab und legen Sie die Berechtigungen fest.


5
Das ist die richtige Antwort.
Sebnukem

1
Ich habe gerade getestet und bestätigt, dass es sich nicht nur um einen Kommentar handelt, sondern dass er entfernt werden kann und die Tasten weiterhin funktionieren. Ich dachte immer, dass es wichtig ist! Vielen Dank für die richtige Antwort. Wie in den obigen Kommentaren habe ich einen Grund, Schlüssel für andere Benutzer zu erstellen, aber ich sage nicht warum, daher gibt es kein Argument.
FreeSoftwareServers

18

Werden Sie zum Benutzer, indem Sie su verwenden und den Schlüssel als dieser Benutzer ausführen:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

Warum die DSA angeben?
Ram

Whoops, Kraft der Gewohnheit. Lass mich aktualisieren.
Rilindo

4
Sie sollten rsa verwenden (oder möglicherweise eine der eliptischen Kurvenvarianten). dsa ist auf unsichere Schlüsselgrößen beschränkt. rsa1 ist ein Legacy-Format für ssh1, das niemand mehr verwenden sollte.
Peter Green

Mein joeuserBenutzer ist ein Servicebenutzer, daher kann ich mich nicht als dieser anmelden. Wie kann ich einem Dienstbenutzer (der nur Prozesse ausführt) erlauben, einen SSH-Schlüssel zu haben?
Jonathan

@JonathanLeaders Sie würden die Shell für den Benutzer angeben, wenn Sie dieser Benutzer werden. In etwa so: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: FTP-Benutzer: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: Warnung: Verzeichnis kann nicht in / var / ftp geändert werden: Keine solche Datei oder Verzeichnis Dieses Konto ist derzeit nicht verfügbar. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo

6

Wie hier zu sehen , können Sie mit chmod die Leseberechtigungen des Ordners des Benutzers ändern, dem Sie den SSH-Schlüssel hinzufügen möchten.

vim /home/username/.ssh/authorized_keys

Fügen Sie dann einfach den Schlüssel in eine neue Zeile am Ende dieser Datei ein


1
Link ist tot ...
Nyxynyx
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.