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


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


76
2017-10-22 19:24


Ursprung


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 für den Benutzer haben. Viel besser generiert der Benutzer den Schlüssel und sendet Ihnen dann einfach den öffentlichen Schlüssel. - Iain
Aber ist das nicht schwierig, wenn Sie keine Passwort-Logins zulassen? Wenn ich nur einen Schlüssel habe und einen neuen Benutzer eingerichtet habe, können sie sich nicht anmelden, um ihren Schlüssel einzurichten. - LVLAaron


Antworten:


Du könntest das mit machen ssh-keygenDenken Sie jedoch daran, dass der private Schlüssel für den Benutzer privat sein sollte, also sollten Sie sehr vorsichtig sein, um ihn sicher zu halten - so sicher wie das Passwort des Benutzers. Oder noch sicherer, da der Benutzer es wahrscheinlich nicht bei der ersten Anmeldung ändern muss.

ssh-keygen -f anything erstellt zwei Dateien im aktuellen Verzeichnis. anything.pub ist der öffentliche Schlüssel, den Sie an den Benutzer anhängen können ~/.ssh/authorized_keys auf jedem Zielserver.

Die andere Datei, gerade angerufen anything ist der private Schlüssel und sollte daher für den Benutzer sicher gespeichert werden. Der Standardstandort wäre ~username/.ssh/id_rsa (hier genannt id_rsa, das ist Standard für RSA-Schlüssel). Denken Sie daran, dass die .ssh Das Verzeichnis kann von keinem anderen als dem Benutzer gelesen oder geschrieben werden, und das Home-Verzeichnis des Benutzers kann nur von dem Benutzer beschreibbar sein. Ebenso müssen die Berechtigungen auch für den privaten Schlüssel gelten: Lesen / Schreiben nur für den Benutzer, und das Verzeichnis .ssh und die private Schlüsseldatei müssen dem Benutzer gehören.

Technisch könnte man den Schlüssel irgendwo speichern. Mit ssh -i path/to/privatekey Sie können diesen Ort beim Verbinden angeben. Auch hier sind Eigentumsrechte und Berechtigungen kritisch und ssh wird nicht funktionieren, wenn Sie sie nicht richtig haben.


74
2017-10-22 19:35



+1, um auszudrücken, dass es sich um einen privaten (!) Schlüssel handelt - mailq
Sie gehen davon aus, dass der Benutzer eine reale Person ist. Wenn die Anmeldung ein nicht interaktiver Benutzer ist, der zum Ausführen von Dienstprogrammaufgaben verwendet wird (z. B. das Ausführen von laufenden Maine-Skripts auf Remote-Servern), dann würden Sie wahrscheinlich den Schlüssel für diesen Benutzer manuell generieren. Natürlich hat das seine eigenen Auswirkungen auf die Sicherheit, aber das ist eine andere Geschichte. - Rilindo
@Rilindo ssh -i Zu einem privaten Schlüssel für einen nicht-privilegierten Prozess gehöre ich mehr als ein paar automatisierte rsync Backup-Prozesse. :) - Shadur
Ich mag diese Art von Antwort nicht, die sagt "Du solltest das nicht tun", aber beantworte die Frage nicht. Während dies für den Kontext der ursprünglichen Frage korrekt und hilfreich sein mag, können andere Personen in einer anderen Situation die gleiche Frage haben. "ssh-Schlüssel sollten nie für einen anderen Benutzer generiert werden": Das gilt im einfachen Fall. Denken Sie jedoch an mehrere Identitäten derselben Person. Es kann mehrere Konten auf mehreren Systemen geben, von denen nicht alle die Generierung von Schlüsseln oder den entsprechenden Schutz privater Schlüssel ermöglichen. - Gustave
usersoder user's - User


Da ist keine Benutzerinformationen in den SSH-Schlüsseln.

Letztes Feld in einem öffentlichen Schlüssel ist a 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 Berechtigungen fest.


108
2017-10-22 19:55



Das ist die richtige Antwort. - sebnukem
Ich habe nur getestet und bestätigt, es ist nicht nur ein Kommentar, aber es kann entfernt werden und die Tasten funktionieren immer noch. Ich dachte immer, es wäre wichtig! Danke für die richtige Antwort. Wie bei den obigen Kommentaren habe ich einen Grund, Schlüssel für andere Benutzer zu erstellen, aber ich sage nicht warum, also gibt es keinen Grund dafür. - FreeSoftwareServers


Werde der Benutzer mit su und führen Sie den Schlüssel als diesen Benutzer aus:

[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):

16
2017-10-22 19:35



Warum die DSA angeben? - Ram
Hoppla, Macht der Gewohnheit. Lass mich updaten. - Rilindo
Sie sollten rsa (oder möglicherweise eine der Varianten der eliptischen Kurve) verwenden. dsa ist auf unsichere Schlüsselgrößen beschränkt. rsa1 ist ein Legacy-Format für ssh1, das niemand mehr benutzen sollte. - Peter Green
Meine joeuser ist ein Dienstbenutzer, daher kann ich mich nicht als Benutzer anmelden. Wie erlaube ich einem Service-Benutzer (der nur Prozesse ausführt), einen ssh-Schlüssel zu haben? - Jonathan
@ JonathanLeaders Sie würden die Shell für den Benutzer angeben, wenn dieser Benutzer wird. So etwas wie: `` `[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 zur Zeit nicht verfügbar. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` ` - Rilindo


Wie gesehen Hierkönnen Sie chmod verwenden, um die Leseberechtigungen des Ordners des Benutzers zu ändern, dem Sie den SSH-Schlüssel hinzufügen möchten.

vim /home/username/.ssh/authorized_keys

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


5
2018-01-09 23:42



Der Link ist tot ... - Nyxynyx