web-dev-qa-db-fra.com

Comment enregistrer un nom d'utilisateur et un mot de passe avec Mercurial?

J'ai utilisé Mercurial dans un projet personnel et je saisis mon nom d'utilisateur et mon mot de passe chaque fois que je veux envoyer quelque chose au serveur.

J'ai essayé d'ajouter ce qui suit au fichier .hgrc de mon répertoire personnel, mais il semble être complètement ignoré.

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

Comment faire cela de la bonne façon?

266
satoru

Vous pouvez créer une section auth dans votre fichier .hgrc ou Mercurial.ini, comme suit:

[auth]
bb.prefix = https://bitbucket.org/repo/path
bb.username = foo
bb.password = foo_passwd

La partie "bb" est un identifiant arbitraire et est utilisée pour faire correspondre le préfixe avec le nom d’utilisateur et le mot de passe - pratique pour gérer différents combos nom d'utilisateur/mot de passe avec différents sites (préfixe)

Vous pouvez également spécifier uniquement le nom d'utilisateur. Il vous suffira ensuite de saisir votre mot de passe lorsque vous appuierez.

Pour plus de détails, voir: http://hgtip.com/tips/advanced/2009-10-01-configuring-user-auth-https/

Je recommanderais également de jeter un coup d'œil à extension du trousseau de clés . Comme il stocke le mot de passe dans le jeu de clés de votre système au lieu d’un fichier texte brut, il est plus sécurisé. TortoiseHg est fourni avec Windows et une discussion est en cours sur sa distribution en tant qu’extension fournie sur toutes les plateformes.

325
Laurens Holst

Il existe trois façons de procéder: utiliser le fichier .hgrc, utiliser ssh ou utiliser l’extension de clé.


1. La méthode INSECURE - mettez à jour votre fichier ~/.hgrc

Le format qui fonctionne pour moi (dans mon fichier ~/.hgrc) est-ce

[ui]
username=Chris McCauley <[email protected]>

[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password


Vous pouvez configurer autant de pensions que vous voulez en ajoutant plus de triplets de préfixe, nom d'utilisateur, mot de passe en ajoutant un tag unique.

Cela ne fonctionne que dans Mercurial 1.3 et, bien évidemment, votre nom d'utilisateur et votre mot de passe sont en clair, ce qui n'est pas bien.


2. Le moyen sécurisé - Utilisez SSH pour éviter d'utiliser des mots de passe

Mercurial supporte pleinement SSH afin que nous puissions tirez parti de la capacité de SSH à se connecter à un serveur sans mot de passe - vous effectuez une configuration ponctuelle pour fournir un certificat auto-généré. C'est de loin le moyen le plus sûr de faire ce que vous voulez.


Vous trouverez plus d’informations sur la configuration login sans mot de passe ici


3. L'extension du trousseau

Si vous voulez une option sécurisée, mais que vous n'êtes pas familier avec SSH, pourquoi ne pas essayer ceci?

De la docs ...

L'extension demande le mot de passe HTTP sur le premier pull/push vers/depuis le référentiel distant donné (comme c'est le cas par défaut), mais enregistre le mot de passe (associé au nom d'utilisateur et à l'URL du référentiel distant) dans la base de mots de passe. Lors de la prochaine exécution, il recherche le nom d'utilisateur dans .hg/hgrc, puis le mot de passe approprié dans la base de données de mots de passe, et utilise ces informations d'identification si elles sont trouvées.

Il y a des informations plus détaillées ici

167
Chris McCauley

Personne n'a mentionné l'extension du trousseau. Cela sauvegardera le nom d'utilisateur et le mot de passe dans le trousseau de clés du système, ce qui est beaucoup plus sécurisé que le stockage de vos mots de passe dans un fichier statique comme mentionné ci-dessus. Suivez les étapes ci-dessous et vous devriez être prêt à partir. Je l'ai eu sur Ubuntu en 2 minutes environ.

>> Sudo apt-get install python-pip
>> Sudo pip install keyring
>> Sudo pip install Mercurial_keyring

**Edit your .hgrc file to include the extension**
[extensions]
Mercurial_keyring = 

https://www.Mercurial-scm.org/wiki/KeyringExtension

64
user570626

Un simple hack consiste à ajouter un nom d'utilisateur et un mot de passe à l'URL Push dans le fichier .hg/hgrc de votre projet:

[paths]
default = http://username:[email protected]/myproject

(Notez que de cette façon vous stockez le mot de passe en texte brut)

Si vous travaillez sur plusieurs projets du même domaine, vous pouvez ajouter une règle de réécriture dans votre fichier ~/.hgrc, afin d'éviter en répétant ceci pour tous les projets:

[rewrite]
http.//mydomain.com = http://username:[email protected]

Encore une fois, puisque le mot de passe est stocké en texte brut, je ne stocke généralement que mon nom d'utilisateur.

Si vous travaillez sous Gnome, j'explique comment intégrer Mercurial et le porte-clés Gnome ici:

http://aloiroberto.wordpress.com/2009/09/16/Mercurial-gnome-keyring-integration/

30
Roberto Aloi

Personne ci-dessus expliqué/clarifié les termes à un utilisateur novice. Ils se perdent dans les termes

.hg/hgrc - ce fichier est utilisé pour le référentiel, à l'emplacement local/workspace/dans le dossier .hg du référentiel actuel.

~/.hgrc - ce fichier est différent de celui ci-dessous. ce fichier réside dans le répertoire ~ ou home.

myremote.xxxx = ..... bb.xxxx = ......

C'est l'une des lignes de la section/directive [auth], lors de l'utilisation de l'extension de trousseau Mercurial. Assurez-vous que le nom du serveur que vous avez mis ici correspond à ce que vous utilisez en faisant "hg clone" sinon le trousseau dira, utilisateur non trouvé. bb ou myremote dans la ligne ci-dessous, sont "alias name" que vous DEVEZ donner en faisant "hg clone http: /.../../ repo1 bb or myremote" sinon, cela ne fonctionnera pas ou vous devrez vous assurer que votre Le fichier .hg/hgrc du référentiel contient le même alias, c'est-à-dire (ce que vous avez donné en faisant le clone de hg .. en dernier paramètre).

PS les liens suivants pour des détails clairs, désolé pour la grammaire rapidement écrite.

ex: Si à l'intérieur de ~/.hgrc (répertoire de base de l'utilisateur sous Linux/Unix) ou Mercurial.ini sous Windows dans le répertoire de base de l'utilisateur, contient, la ligne suivante et si vous le faites

`"hg clone http://.../.../reponame myremote"`

, les identifiants de l'utilisateur ne seront jamais demandés plus d'une fois par lien de référentiel http. Dans ~/.hgrc, sous [extensions], une ligne pour "Mercurial_keyring =" ou "hgext.Mercurial_keyring = /path/to/votre/Mercurial_keyring.py" .. une de ces lignes doit être présente.

[auth]
myremote.schemes = http https
myremote.prefix = thsusncdnvm99/hg
myremote.username = c123456

J'essaie de savoir comment définir la propriété PREFIX afin que l'utilisateur puisse cloner ou effectuer des opérations Hg sans invites de nom d'utilisateur/mot de passe et sans se soucier de ce qu'il a mentionné dans le http: // ..../... for nom_serveur lors de l'utilisation du lien repo Hg. Il peut s'agir d'une adresse IP, d'un nom de serveur ou du nom de domaine complet du serveur.

23
Arun Sangal

Installation de Mercurial_keyring sur Mac OSX sous MacPorts:

Sudo port install py-keyring
Sudo port install py-Mercurial_keyring

Ajoutez ce qui suit à ~/.hgrc:

# Add your username if you haven't already done so.
[ui]
username = [email protected]

[extensions]
Mercurial_keyring =
3
ftvs

Si vous utilisez TortoiseHg, vous devez exécuter ces trois étapes, illustrées dans la capture d'écran ci-jointe, ce qui ajouterait vos informations d'identification au référentiel spécifique avec lequel vous travaillez.

enter image description here

Pour ajouter des paramètres globaux, vous pouvez accéder au fichier C:\users\user.name\Mercurial.ini et ajouter la section

[auth]
bb.prefix=https://bitbucket.org/zambezia/packagemanager
bb.username = $username
bb.password = $password

J'espère que cela t'aides.

2
A.B.

Bien que cela puisse ou non fonctionner dans votre situation, j’ai trouvé utile de générer une clé publique/privée à l’aide de Pageant de PuTTY.

Si vous travaillez également avec bitbucket (.org), cela devrait vous permettre de fournir une clé publique à votre compte utilisateur. Les commandes qui atteignent le référentiel seront alors automatiquement sécurisées.

Si Pageant ne démarre pas pour vous lors d'un redémarrage, vous pouvez ajouter un raccourci vers Pageant dans le menu "Démarrer" de Windows. Le raccourci peut nécessiter qu'une "propriété" soit remplie avec l'emplacement de votre fichier privé (.ppk). .

Mercurial et vos référentiels locaux devront être configurés de manière à permettre le transfert/extraction au format SSH.

Voici quelques instructions détaillées sur le site de Atlassian pour Windows OR Mac/Linux.

Vous n'avez pas à prendre ma parole pour cela et il n'y a pas de doute que vous pouvez le faire autrement. Peut-être que ces étapes décrites ici sont plus pour vous:

  1. Démarrer PuttyGen à partir de Démarrer -> PuTTY-> PuttyGen
  2. Générez une nouvelle clé et enregistrez-la en tant que fichier .ppk sans phrase secrète
  3. Utilisez PuTTY pour vous connecter au serveur auquel vous souhaitez vous connecter
  4. Ajoutez le texte de clé publique de PuttyGen au texte de ~/.ssh/registered_keys
  5. Créez un raccourci vers votre fichier .ppk à partir de Démarrer -> PuTTY vers Démarrer -> Démarrage
  6. Sélectionnez le raccourci .ppk dans le menu de démarrage (cela se produira automatiquement à chaque démarrage)
  7. Voir l'icône Pageant dans la barre d'état système? Faites un clic droit dessus et sélectionnez “Nouvelle session”
  8. Entrez nom d'utilisateur @ nom d'hôte dans le champ "Nom d'hôte".
  9. Vous allez maintenant vous connecter automatiquement.
0
veeTrain