Comment créer une clé SSH pour un autre utilisateur?
90
J'essaie de créer une clé SSH pour un autre utilisateur. Je suis connecté en tant que root. Puis-je simplement éditer les fichiers générés par ssh-keygen et changer de racine pour l'utilisateur que je veux?
Si vous générez la clé pour l'utilisateur, vous devez également disposer d'une méthode sécurisée pour obtenir la clé privée et sa phrase secrète pour l'utilisateur. Il est nettement préférable que l’utilisateur génère la clé, puis vous envoie simplement la clé publique par courrier électronique.
user9517
Mais n'est-ce pas difficile si vous n'autorisez pas les connexions par mot de passe? Si je n'utilise que la clé et que je configure un nouvel utilisateur, ils ne peuvent pas se connecter pour configurer leur clé.
LVLAaron
Réponses:
79
Vous pouvez le faire avec ssh-keygen, cependant, rappelez-vous que la clé privée est censée être privée pour l'utilisateur. Vous devez donc faire très attention à le garder en sécurité, de la même manière que le mot de passe de l'utilisateur. Ou même plus sûr, car l'utilisateur ne sera probablement pas obligé de le changer lors de sa première connexion.
ssh-keygen -f anythingcrée deux fichiers dans le répertoire en cours. anything.pubest la clé publique, que vous pouvez ajouter à l'utilisateur ~/.ssh/authorized_keyssur n'importe quel serveur de destination.
L’autre fichier, qui vient d’être appelé, anythingest la clé privée et doit donc être stocké en toute sécurité pour l’utilisateur. L'emplacement par défaut serait ~username/.ssh/id_rsa(ici nommé id_rsa, qui est celui par défaut pour les clés RSA). Rappelez-vous que le .sshrépertoire ne peut être lisible ou écrit en écriture que par l'utilisateur et que le répertoire personnel de l'utilisateur ne peut être écrit en écriture que par l'utilisateur. De même, les autorisations sur la clé privée doivent également être restreintes: lecture / écriture pour l'utilisateur uniquement, ainsi que le répertoire .ssh et le fichier de clé privée doivent appartenir à l'utilisateur.
Techniquement, vous pouvez stocker la clé n'importe où. Avec ssh -i path/to/privatekeyvous, vous pouvez spécifier cet emplacement lors de la connexion. Encore une fois, la propriété et les autorisations appropriées sont critiques et ssh ne fonctionnera pas si vous ne les avez pas correctement.
+1 pour exprimer qu'il s'agit d'une clé privée (!)
mailq
51
Vous supposez que l'utilisateur est une personne réelle. Si la connexion est un utilisateur non interactif utilisé pour exécuter des tâches utilitaires (par exemple, exécuter des scripts maine sur des serveurs distants), alors oui, vous générerez probablement la clé pour cet utilisateur manuellement. Bien sûr, cela a ses propres implications en matière de sécurité, mais c'est une autre histoire.
Rilindo
2
@Rilindo ssh -ià une clé privée pour un processus non privilégié est la façon dont je gère plus que quelques processus de sauvegarde rsync automatisés. :)
Shadur
9
Je n'aime pas ce genre de réponse qui dit "tu ne devrais pas faire ça" mais ne réponds pas à la question. Bien que cela puisse être correct et utile dans le contexte de la question initiale, d’autres personnes peuvent poser la même question dans une situation différente. "Les clés ssh ne doivent jamais être générées pour un autre utilisateur": C’est vrai dans le cas simple. Mais considérons plusieurs identités de la même personne physique, par exemple. Il peut y avoir plusieurs comptes sur plusieurs systèmes, tous ne vous permettant pas de générer des clés ou permettant de protéger les clés privées de manière appropriée.
Gustave
usersouuser's
Utilisateur
135
Il n'y a pas d'informations utilisateur dans les clés SSH .
Le dernier champ d'une clé publique est un commentaire (et peut être modifié en exécutant la commande suivante ssh-keygen -C newcomment).
Nul besoin de faire quelque chose de spécial pour créer une clé pour un autre utilisateur, il suffit de la placer au bon endroit et de définir les autorisations.
Je viens de tester et de confirmer, non seulement il s’agit d’un commentaire, mais il peut être supprimé et les touches fonctionnent toujours. J'ai toujours pensé que c'était important! Merci d'avoir donné la bonne réponse. Comme les commentaires ci-dessus, j'ai une raison de créer des clés pour d'autres utilisateurs, mais je ne dirai pas pourquoi, donc il n'y a pas d'argument.
FreeSoftwareServers
18
Devenez l'utilisateur en utilisant su et exécutez la clé en tant qu'utilisateur:
[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):
Oups, force d'habitude. Laissez-moi mettre à jour.
Rilindo
4
vous devriez utiliser rsa (ou éventuellement une des variantes de la courbe elliptique). dsa est limité aux clés non sécurisées. rsa1 est un format hérité pour ssh1 que personne ne devrait plus utiliser.
Peter Green
Mon joeuserest un utilisateur de service, donc je ne peux pas me connecter comme eux. Comment permettre à un utilisateur de service (qui exécute uniquement des processus) d'avoir une clé ssh?
Jonathan
@JonathanLeaders Vous spécifierez le shell pour l'utilisateur lorsqu'il deviendra cet utilisateur. Quelque chose comme ceci: `` [[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: Utilisateur FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: avertissement: impossible de changer de répertoire en / var / ftp: aucun fichier ou répertoire de ce type Ce compte n'est actuellement pas disponible. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo
6
Comme indiqué ici , vous pouvez utiliser chmod pour modifier les autorisations de lecture du dossier de l'utilisateur auquel vous souhaitez ajouter la clé SSH.
vim /home/username/.ssh/authorized_keys
Ensuite, il suffit de coller la clé dans une nouvelle ligne au bas de ce fichier
Réponses:
Vous pouvez le faire avec
ssh-keygen
, cependant, rappelez-vous que la clé privée est censée être privée pour l'utilisateur. Vous devez donc faire très attention à le garder en sécurité, de la même manière que le mot de passe de l'utilisateur. Ou même plus sûr, car l'utilisateur ne sera probablement pas obligé de le changer lors de sa première connexion.ssh-keygen -f anything
crée deux fichiers dans le répertoire en cours.anything.pub
est la clé publique, que vous pouvez ajouter à l'utilisateur~/.ssh/authorized_keys
sur n'importe quel serveur de destination.L’autre fichier, qui vient d’être appelé,
anything
est la clé privée et doit donc être stocké en toute sécurité pour l’utilisateur. L'emplacement par défaut serait~username/.ssh/id_rsa
(ici nomméid_rsa
, qui est celui par défaut pour les clés RSA). Rappelez-vous que le.ssh
répertoire ne peut être lisible ou écrit en écriture que par l'utilisateur et que le répertoire personnel de l'utilisateur ne peut être écrit en écriture que par l'utilisateur. De même, les autorisations sur la clé privée doivent également être restreintes: lecture / écriture pour l'utilisateur uniquement, ainsi que le répertoire .ssh et le fichier de clé privée doivent appartenir à l'utilisateur.Techniquement, vous pouvez stocker la clé n'importe où. Avec
ssh -i path/to/privatekey
vous, vous pouvez spécifier cet emplacement lors de la connexion. Encore une fois, la propriété et les autorisations appropriées sont critiques et ssh ne fonctionnera pas si vous ne les avez pas correctement.la source
ssh -i
à une clé privée pour un processus non privilégié est la façon dont je gère plus que quelques processus de sauvegarde rsync automatisés. :)users
ouuser's
Il n'y a pas d'informations utilisateur dans les clés SSH .
Le dernier champ d'une clé publique est un commentaire (et peut être modifié en exécutant la commande suivante
ssh-keygen -C newcomment
).Nul besoin de faire quelque chose de spécial pour créer une clé pour un autre utilisateur, il suffit de la placer au bon endroit et de définir les autorisations.
la source
Devenez l'utilisateur en utilisant su et exécutez la clé en tant qu'utilisateur:
la source
joeuser
est un utilisateur de service, donc je ne peux pas me connecter comme eux. Comment permettre à un utilisateur de service (qui exécute uniquement des processus) d'avoir une clé ssh?Comme indiqué ici , vous pouvez utiliser chmod pour modifier les autorisations de lecture du dossier de l'utilisateur auquel vous souhaitez ajouter la clé SSH.
Ensuite, il suffit de coller la clé dans une nouvelle ligne au bas de ce fichier
la source