Connexion ssh, deux utilisateurs
Résolu
Bonjour,
J'ai créé une connexion ssh entre deux serveurs distants.
Je peux passer de l'un à l'autre avec ssh
Comment puis-je créer un nouvel accès vers un second utilisateur (sans demande de mot de passe) ?
Quand j'essaye la commande exécutée la première fois pour "user1", en la transposant à "user2" je reçois un message d'erreur disant que la clé existe déjà.
J'ai créé une connexion ssh entre deux serveurs distants.
Je peux passer de l'un à l'autre avec ssh
ssh user1@adresse.com
Comment puis-je créer un nouvel accès vers un second utilisateur (sans demande de mot de passe) ?
ssh user2@adresse.com
Quand j'essaye la commande exécutée la première fois pour "user1", en la transposant à "user2" je reçois un message d'erreur disant que la clé existe déjà.
A voir également:
- Connexion ssh, deux utilisateurs
- Gmail connexion - Guide
- Connexion chromecast - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Comment savoir si quelqu'un utilise ma connexion internet - Guide
4 réponses
Réponse brève
Non ce n'est pas une très bonne approche dans le cas général, même si dans ton cas ça a probablement fait ce que tu voulais que ça fasse.
Réponse longue
Les clés ssh
En gros, ce qu'il faut comprendre, c'est comment marchent les clés ssh :
http://prendreuncafe.com/blog/post/2005/08/29/262-installer-sa-cle-ssh-sur-un-serveur-distant
ssh repose sur des challenges pour vérifier l'identité de quelqu'un : pour faire simple seul le détenteur de la clé privée correspondante peut répondre correctement au challenge. Bien évidemment, avoir le droit de se connecter sans mot de passe à user2 ne doit pas permettre de se connecter "gratuitement" à user3, donc il faut bien que ssh sache pour quels utilisateurs ta clé s'applique.
De plus, on ne peut pas se permettre d'avoir un fichier de configuration (qui ne serait modifiable que par root) car les utilisateurs peuvent légitimement installer des clés ssh sans être administrateurs (après tout, ils ont le mot de passe de user2 ou user3 !). Enfin, user2 et user3 doivent pouvoir contrôler qui peut accéder à leur compte sans mot de passe. Pour toutes ses raison, la clé ssh est donc forcément installée dans ~user2 et ~user3. Ensuite comme toute information liée à une application stockée dans un profil utilisateur, on la "cache" dans un répertoire portant le nom de l'application, d'où
Maintenant comment matérialiser cet accès de manière sûre. Potentiellement toute personne pouvant se connecter à user2 peut accéder aux fichiers de
Nous avons maintenant tous les éléments : pour se connecter en ssh sans mot de passe à un utilisateur, on installe concrètement sa clé publique. Ceci consiste à l'ajouter à la fin du fichier
Pour ce faire on peut la copier à la main à la fin de ce fichier, ou utiliser une commande qui le fera pour toi (
Retour sur ce que tu as fait
Dans ton cas tu as choisi de brutalement copier un .ssh, ce qui pose plusieurs problèmes potentiels dans l'absolu :
- si toto et titi doivent pouvoir accéder à user2@B, et seulement toto à user3@B, tu as à tort autorisé titi à accéder à user3@B
- si user2@B avait une clé privée, tu l'as copiée dans user3 (voire, tu as écrasé des clés privées de user3@B avec des clés de user2@A).
- il y a d'autres fichiers contenus dans .ssh (notamment les hosts en lesquels tu as confiance) que tu as probablement à tort écrasé.
Conclusion
En résumé : utilise
Bonne chance
Non ce n'est pas une très bonne approche dans le cas général, même si dans ton cas ça a probablement fait ce que tu voulais que ça fasse.
Réponse longue
Les clés ssh
En gros, ce qu'il faut comprendre, c'est comment marchent les clés ssh :
http://prendreuncafe.com/blog/post/2005/08/29/262-installer-sa-cle-ssh-sur-un-serveur-distant
ssh repose sur des challenges pour vérifier l'identité de quelqu'un : pour faire simple seul le détenteur de la clé privée correspondante peut répondre correctement au challenge. Bien évidemment, avoir le droit de se connecter sans mot de passe à user2 ne doit pas permettre de se connecter "gratuitement" à user3, donc il faut bien que ssh sache pour quels utilisateurs ta clé s'applique.
De plus, on ne peut pas se permettre d'avoir un fichier de configuration (qui ne serait modifiable que par root) car les utilisateurs peuvent légitimement installer des clés ssh sans être administrateurs (après tout, ils ont le mot de passe de user2 ou user3 !). Enfin, user2 et user3 doivent pouvoir contrôler qui peut accéder à leur compte sans mot de passe. Pour toutes ses raison, la clé ssh est donc forcément installée dans ~user2 et ~user3. Ensuite comme toute information liée à une application stockée dans un profil utilisateur, on la "cache" dans un répertoire portant le nom de l'application, d'où
~user2/.sshet
~user3/.ssh.
Maintenant comment matérialiser cet accès de manière sûre. Potentiellement toute personne pouvant se connecter à user2 peut accéder aux fichiers de
~/.sshdonc on ne peut pas se permettre d'afficher une information en clair. Mais comme ssh est asymétrique (clé privée, clé publique) tout va bien. Évidemment c'est la clé publique qui sera visible "publiquement" dans
~user2/.sshou
~user3/.ssh.
Nous avons maintenant tous les éléments : pour se connecter en ssh sans mot de passe à un utilisateur, on installe concrètement sa clé publique. Ceci consiste à l'ajouter à la fin du fichier
~/.ssh/authorized_keys.
Pour ce faire on peut la copier à la main à la fin de ce fichier, ou utiliser une commande qui le fera pour toi (
ssh-copy-id).
Retour sur ce que tu as fait
Dans ton cas tu as choisi de brutalement copier un .ssh, ce qui pose plusieurs problèmes potentiels dans l'absolu :
- si toto et titi doivent pouvoir accéder à user2@B, et seulement toto à user3@B, tu as à tort autorisé titi à accéder à user3@B
- si user2@B avait une clé privée, tu l'as copiée dans user3 (voire, tu as écrasé des clés privées de user3@B avec des clés de user2@A).
- il y a d'autres fichiers contenus dans .ssh (notamment les hosts en lesquels tu as confiance) que tu as probablement à tort écrasé.
Conclusion
En résumé : utilise
ssh-copy-idla prochaine fois :-)
Bonne chance
Bonjour,
Personnellement je n'ai pas compris ce que tu voulais faire. Si j'ai bien compris tu as deux serveur A et B, et tu te connectes en ssh depuis ta machine (disons C).
1) Quels utilisateurs sont configurés sur A et sur B ? user1 sur A et user2 sur B ?
2) Quelles sont les 2 commandes ssh que tu mentionnes, et depuis quelle(s) machine(s) sont elles lancées ? Est-ce que tu lances depuis C :
3) Une fois ceci clarifié, peux-tu nous expliquer avec ces notations ce que tu veux faire.
Bonne chance
Personnellement je n'ai pas compris ce que tu voulais faire. Si j'ai bien compris tu as deux serveur A et B, et tu te connectes en ssh depuis ta machine (disons C).
1) Quels utilisateurs sont configurés sur A et sur B ? user1 sur A et user2 sur B ?
2) Quelles sont les 2 commandes ssh que tu mentionnes, et depuis quelle(s) machine(s) sont elles lancées ? Est-ce que tu lances depuis C :
ssh user1@A
ssh user2@B
3) Une fois ceci clarifié, peux-tu nous expliquer avec ces notations ce que tu veux faire.
Bonne chance
Bonjour, merci pour la réponse.
effectivement mon énoncé n'est pas très clair.
1) Quels utilisateurs sont configurés sur A et sur B ? user1 sur A et user2 sur B ?
-> Sur A user1, sur B user2 et user3
2) Quelles sont les 2 commandes ssh que tu mentionnes, et depuis quelle(s) machine(s) sont elles lancées ? Est-ce que tu lances depuis C :
-> je lance depuis le répertoire de travail de A:
la connexion se fait sans demande de mot de passe.
si je lance depuis A :
Je doit manuellement entrer le mot de passe.
c'est là mon problème.
Je ne vois pas de répertoire ".ssh" dans le home de (B)user3,
alors qu'il y en a un dans (B)user2.
La commande donnant un message d'erreur est la suivante :
3) Une fois ceci clarifié, peux-tu nous expliquer avec ces notations ce que tu veux faire.
-> Au final je veux pouvoir lancer une tâche cron (script bash) qui copierait (scp) un fichier de user1@A vers user3@B
Merci d'avance pour votre aide.
effectivement mon énoncé n'est pas très clair.
1) Quels utilisateurs sont configurés sur A et sur B ? user1 sur A et user2 sur B ?
-> Sur A user1, sur B user2 et user3
2) Quelles sont les 2 commandes ssh que tu mentionnes, et depuis quelle(s) machine(s) sont elles lancées ? Est-ce que tu lances depuis C :
-> je lance depuis le répertoire de travail de A:
ssh user2@B
la connexion se fait sans demande de mot de passe.
si je lance depuis A :
ssh user3@B
Je doit manuellement entrer le mot de passe.
c'est là mon problème.
Je ne vois pas de répertoire ".ssh" dans le home de (B)user3,
alors qu'il y en a un dans (B)user2.
La commande donnant un message d'erreur est la suivante :
ssh-keygen -t rsa
3) Une fois ceci clarifié, peux-tu nous expliquer avec ces notations ce que tu veux faire.
-> Au final je veux pouvoir lancer une tâche cron (script bash) qui copierait (scp) un fichier de user1@A vers user3@B
Merci d'avance pour votre aide.
J'ai copié récursivement le dossier .ssh de user2@B vers user3@B, ça ma marche, mais est-ce une bonne procédure ?