2009-02-28 6 views
4

Je n'arrive pas à comprendre comment créer des clés publiques/privées pour d'autres utilisateurs sur mon serveur. Sur mon serveur, je tapez ce qui suit à travers la coquillessh-keygen avec utilisateur différent pour subversion

(uiserver): john:> ssh-keygen -t dsa

Après cela, j'entre les noms de fichiers et le mot de passe, ce qui se traduit avec succès dans une clé privée et paire de clés publiques pour "john". Maintenant, quand j'utilise cette clé pour ssh dans mon dépôt subversion (assis sur jean), toutes les actions sont enregistrées comme "john". C'est parfait. Ensuite, je veux créer une paire de clés publique/privée pour «george» afin qu'il puisse accéder à mon serveur. J'ai répété le ssh-keygen de mon serveur. Ensuite, j'ai donné la clé privée à George. George a réussi à installer la clé, mais à chaque fois qu'il effectue une action dans le dépôt svn, subversion consigne ses actions comme "john" au lieu de "george". Comment obtenir subversion pour reconnaître la différence entre "george" et "john"? J'ai regardé dans authorized_keys2 et j'ai remarqué que le dernier commentaire pour les deux clés est "john @ uiserver". J'ai essayé d'éditer le commentaire, mais Subversion ne peut toujours pas reconnaître la différence entre George et John.

Détail supplémentaire

J'ai une solution demi-travail basée sur la réponse de Juliano. Je suis allé à la machine "david" (linux), fait les clés prv/pub, attaché la clé pub à authorized_keys2 de john. Parfait! SVN consigne les modifications de David comme David.

Je suis allé à la machine "george" (windows xp), utilisé puttygen pour créer des clés prv/pub, attaché la clé pub à authorized_keys2 de john. George peut accéder à svn, mais tous ses changements sont toujours enregistrés comme john. J'essaie la solution du tunnel de Bojo dès que je trouve où le configurer dans TortoiseSVN.

RÉPONSE

J'utilise l'option 2 de la réponse de bojo. En fin de compte, tout ce que je devais faire était d'ajouter la ligne suivante à mon authorized_keys2

command="svnserve -t --tunnel-user=george",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss <george's long public key> == meaningful comment 

J'ai aussi ajouté la ligne

george=george's password 

à mon/pathtorepository/conf/passwd à mon dossier de mot de passe de la subversion

+0

John, vous voudrez ouvrir une session dans la machine linux comme « john » et ajoutez les instructions que je Référé à (soit l'ajout d'un compte George en tant que super-utilisateur, ou faire la tour de commande sous le compte John). Vous ne devriez pas avoir à configurer TortoiseSVN du tout. – bojo

Répondre

3

Vérifiez les instructions sur la façon d'utiliser la commande --tunnel-utilisateur ici au svn manual . J'imagine que la raison pour laquelle George apparaît comme John est parce que vous ne dites pas à la session ssh quel utilisateur il est, donc c'est par défaut le compte de John.

Pour clarifier, l'affiche originale a deux options.

  1. Créer un nouveau compte d'utilisateur pour George. Cela suppose qu'il a un accès super utilisateur.
  2. Générez la seconde clé (idéalement George le fait), ajoutez au fichier .ssh/authorized_keys du compte John et ajoutez les commandes liées ci-dessus au fichier .ssh/authorized_users comme décrit. Le lien décrit également comment limiter l'accès de l'utilisateur supplémentaire au compte John.
+0

Merci, j'ai fait l'option 2 et tout fonctionne. J'ai fait comme vous et juliano recommandé, qui est de générer les clés prv et pub sur la machine de George. – John

+0

Bonne clarification (mieux que ma réponse;)). +1 – VonC

4

Puis j'ai donné la clé privée à George.

Les clés privées sont appelées private pour une raison. Ils ne sont jamais destinés à être transférés de cette façon. George devrait créer sa propre paire de clés, dans son propre environnement utilisateur. Mais ce n'est pas lié au problème que vous rencontrez. Les clés sont juste les facteurs premiers d'un très grand nombre (trop simplifié pour faciliter la compréhension). L'identité de l'utilisateur ne fait pas partie de la clé, mais une "étiquette" attachée à la clé, que SSH ne fait pas beaucoup d'utilisation.

De votre description, vous demandez à George de se connecter au compte de John via SSH. Ce qui détermine l'utilisateur connecté aux actions SVN n'est pas lié à la paire de clés utilisée pour l'authentification, mais à l'utilisateur auquel il est réellement connecté.

Ainsi, George doit avoir son propre compte sur le serveur SVN, le dépôt doit être partagé par les deux comptes, et George doit utiliser ses propres informations d'identification pour se connecter au serveur.

URL John: svn + ssh: // john @ svn-server/path/to/repo

URL George: svn + ssh: // george @ svn-server/path/to/repo

+0

La clé devrait certainement être créée par George. Cependant, dans ce cas, il donne ensuite sa clé publique à John, qui ajoute la clé de son fichier .ssh/authorized_keys, puis suit les instructions dans la réponse que j'ai liée. Des comptes séparés ne sont pas requis. – bojo

+0

Si vous utilisez un compte d'utilisateur dédié pour le référentiel, oui. Mais selon la description, il s'agit d'un compte privé, nommé "john". Cette solution permet donc à George de se connecter au compte privé de John. Pas gentil. – Juliano

+0

À droite, la description dit que c'est un compte privé nommé "john", donc mon raisonnement car il se lit comme s'il voulait utiliser un seul compte. Il pourrait facilement restreindre le shell de George pour utiliser seulement svnserve, et ne pas réellement gagner l'accès de coquille au compte de john. – bojo

0

vous pouvez donner un essai à l'aide:

ssh-keygen -C "george" 
Questions connexes