Installieren Sie den öffentlichen Schlüssel über ssh-copy-id für andere Benutzer

26

ssh-copy-idkann verwendet werden, um Ihren öffentlichen Schlüssel auf einem Remote-Computer zu installieren authorized_keys. Könnte derselbe Befehl verwendet werden, um die öffentlichen Schlüssel anderer Benutzer zu installieren, wenn Sie die sudoMöglichkeit dazu haben?

Update: Sowohl lokal als auch remote verwenden Ubuntu 12.04.

Update 2: Beschreibt die Vorgehensweise zum Erstellen eines neuen Benutzerkontos und zum Hinzufügen eines öffentlichen Schlüssels

  1. (remote) Erstellen Sie ein neues Benutzerkonto, und legen Sie es nur für den Zugriff mit öffentlichen Schlüsseln fest.
  2. (lokal) Generieren Sie einen öffentlichen Schlüssel für das neue Benutzerkonto (ssh-keygen).
  3. Normalerweise erstelle ich das Verzeichnis und die Datei .ssh/authorized_keysauf dem Remote-Server und kopiere dann den lokal generierten öffentlichen Schlüssel und füge ihn in das Konto des neuen Benutzers ein. Was ich suche, ist, dass, wenn ich verwenden kann ssh-copy-id, um den öffentlichen Schlüssel dieses neu erstellten Benutzers direkt in das ssh-Verzeichnis zu installieren. Nur um ein paar weitere Befehle zu speichern.
realguess
quelle

Antworten:

12

Nicht derselbe Befehl, aber wenn Sie sudo auf dem Remote-Host haben, können Sie ssh verwenden, um die erforderlichen Schritte remote auszuführen. Ich benutze den folgenden Befehl, um meine SSH-Taste an den Root-Benutzer meiner Himbeere zu senden:

cat ~/.ssh/id_rsa.pub | \
  ssh [email protected] \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • Katzen mein öffentlicher Schlüssel
  • leitet es an ssh weiter
  • SSH verbindet sich mit meiner Himbeere als SSH-Benutzer
  • on remote verwendet sudo zum Erstellen von /root/.ssh
  • verwendet dann sudo mit "tee -a", um stdin (das den Schlüssel von der ersten Katze enthält) an /root/.ssh/authorized_keys anzuhängen

Stellen Sie dieses Zeug einfach als Skript zusammen, fügen Sie vielleicht etwas chmod / chown auf der Remote-Seite hinzu, und Sie haben das, was Sie brauchen.

Michael Wyraz
quelle
Schön und danke für die Befehlsaufteilung.
Blake Frederick
1

Ja :), wenn du zum Beispiel als ghost @ ubuntu und du eingeloggt bist

ssh-copy-id root@host-ip

Dann sehen Sie auf dem Hostserver einen Dateischlüssel /root/.ssh/authorized_keys, der mit endet ghost@ubuntu.
Das bedeutet, dass der Ghost User sein Schlüsselpaar kopiert hat und kein Passwort mehr eingeben muss.
Ich bin mir nicht sicher, ob es -u <username>jetzt mit flag funktioniert , aber Sie können sich immer mit einem anderen Benutzer anmelden

su <user_name> 

und dann ssh-copy-id ...

mirkobrankovic
quelle
1
Wird der Schlüssel installiert /root/.ssh/authorized_keysstatt /home/ghost/.ssh/authorized_keys? Ich habe gerade mein aktuelles Verfahren aktualisiert, um einen öffentlichen Schlüssel für einen neuen Benutzer zu installieren. Nur auf der Suche nach einer besseren Methode. Vielen Dank!
Realguess
Der Schlüssel wird zu Hause bei dem Benutzer installiert, zu dem Sie eine Remote-Verbindung herstellen. Sie können die Option -i von ssh-copy-id verwenden, um anzugeben, welchen Schlüssel Sie kopieren möchten, aber Sie können ihn nicht mit der normalen ssh-copy-id in ein anderes Verzeichnis kopieren.
user2313067
Sie können angeben, als welchen Benutzer Sie den Schlüssel kopieren möchten, wenn Sie sich als root als ssh-copy-id root @ host-ip anmelden möchten, wenn Sie als ghost als ssh-copy-id ghost @ host-ip
möchten
1
Das System wurde so eingerichtet, dass die Anmeldung nur mit dem öffentlichen Schlüssel möglich ist. Da der Benutzer ghostneu erstellt wurde, steht ihm kein öffentlicher Schlüssel zur Verfügung. Aus diesem Grund muss der öffentliche Schlüssel zuerst für den Benutzer installiert ssh-copy-id ghost@host-ipwerden und funktioniert dann. Aber danke, ich denke, ein paar zusätzliche Befehle auf dem Remote-Server werden keine große Sache sein.
Realguess
ja, erst muss pub generieren. key localy und dann ssh-copi-id zum remote-server
mirkobrankovic