Installer la clé publique via ssh-copy-id pour les autres utilisateurs

26

ssh-copy-idpeut être utilisé pour installer votre clé publique dans une machine distante authorized_keys. La même commande pourrait-elle être utilisée pour installer les clés publiques d'autres utilisateurs, si vous en avez la sudocapacité?

Mise à jour: local et distant utilisent Ubuntu 12.04.

Mise à jour 2: décrivant la procédure de création d'un nouveau compte d'utilisateur et d'ajout de clé publique

  1. (à distance) Créez un nouveau compte d'utilisateur et définissez-le uniquement sur l'accès à la clé publique utilisateur.
  2. (local) Générez une clé publique pour le nouveau compte d'utilisateur (ssh-keygen).
  3. Normalement, je fais est de créer le répertoire et le fichier .ssh/authorized_keyssur le serveur distant, puis copiez et collez la clé publique générée localement sur le compte du nouvel utilisateur. Ce que je recherche, c'est que si je peux utiliser ssh-copy-idpour installer la clé publique de cet utilisateur nouvellement créé directement dans le répertoire ssh. Juste pour enregistrer quelques commandes supplémentaires.
realguess
la source

Réponses:

12

Pas la même commande mais si vous avez sudo sur l'hôte distant, vous pouvez utiliser ssh pour effectuer à distance les étapes requises. J'utilise la commande suivante pour envoyer ma clé ssh à l'utilisateur root de ma framboise:

cat ~/.ssh/id_rsa.pub | \
  ssh [email protected] \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • chats ma clé publique
  • tuyaux à ssh
  • ssh se connecte à ma framboise en tant qu'utilisateur ssh
  • à distance utilise sudo pour créer /root/.ssh
  • utilise ensuite sudo avec "tee -a" pour ajouter stdin (qui détient la clé du premier chat) à /root/.ssh/authorized_keys

Il suffit de rassembler ces informations sous forme de script, peut-être d'ajouter un chmod / chown du côté distant et vous avez ce dont vous avez besoin.

Michael Wyraz
la source
Magnifique et merci pour la ventilation des commandes.
Blake Frederick
1

Oui :), si vous, par exemple, êtes connecté en tant que fantôme @ ubuntu et que vous

ssh-copy-id root@host-ip

Que vous verrez, sur le serveur hôte dans /root/.ssh/authorized_keysla clé de fichier se terminant par ghost@ubuntu.
Cela signifie que l'utilisateur fantôme a copié sa paire de clés et n'a plus à taper de mot de passe.
Je ne suis pas sûr que cela fonctionnera avec -u <username>flag maintenant, mais vous pouvez toujours vous connecter en tant qu'utilisateur différent avec

su <user_name> 

puis ssh-copy-id ...

mirkobrankovic
la source
1
La clé sera-t-elle installée au /root/.ssh/authorized_keyslieu de /home/ghost/.ssh/authorized_keys? Je viens de mettre à jour la procédure que j'effectue actuellement pour installer une clé publique pour un nouvel utilisateur. Je cherche juste une meilleure méthode. Merci!
Realguess
La clé sera installée au domicile de l'utilisateur auquel vous vous connectez à distance. Vous pouvez utiliser l'option -i de ssh-copy-id pour spécifier la clé que vous souhaitez copier, mais vous ne pouvez pas la copier dans un autre répertoire avec le ssh-copy-id normal.
user2313067
vous pouvez spécifier sous quel utilisateur vous allez copier la clé, si vous voulez vous connecter en tant que root que ssh-copy-id root @ host-ip, si vous voulez en tant que fantôme que ssh-copy-id ghost @ host-ip
mirkobrankovic
1
Le système a été configuré pour autoriser la connexion par clé publique uniquement. Étant donné que l'utilisateur a ghostété nouvellement créé, aucune clé publique n'est disponible pour l'utilisateur. C'est pourquoi vous devez d'abord installer la clé publique pour l'utilisateur, puis ssh-copy-id ghost@host-ipcela fonctionnera. Mais merci, je pense que quelques commandes supplémentaires sur le serveur distant ne seront pas un gros problème.
realguess
oui, il faut d'abord générer un pub. clé localement et que ssh-copi-id au serveur distant
mirkobrankovic