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?
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.
+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.
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):
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
Antworten:
Sie können dies jedoch tun, indem Sie sich
ssh-keygen
daran 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 anything
Erstellt zwei Dateien im aktuellen Verzeichnis.anything.pub
ist der öffentliche Schlüssel, den Sie~/.ssh/authorized_keys
auf jedem Zielserver an den Benutzer anhängen können .Die andere gerade aufgerufene Datei
anything
ist der private Schlüssel und sollte daher für den Benutzer sicher gespeichert werden. Der Standardspeicherort wäre~username/.ssh/id_rsa
(hier benanntid_rsa
, der Standard für RSA-Schlüssel ist). Denken Sie daran, dass das.ssh
Verzeichnis 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/privatekey
Sie 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.quelle
ssh -i
zu einem privaten Schlüssel für einen nicht privilegierten Prozess ist, wie ich mehr als einige automatisierte rsync-Sicherungsprozesse handhabe. :)users
oderuser's
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.
quelle
Werden Sie zum Benutzer, indem Sie su verwenden und den Schlüssel als dieser Benutzer ausführen:
quelle
joeuser
Benutzer 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?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.
Fügen Sie dann einfach den Schlüssel in eine neue Zeile am Ende dieser Datei ein
quelle