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.

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 pi@192.168.1.25 \
  "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.


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 ...


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.