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

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

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

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

Comment faire de la bonne façon?

259
demandé sur ЯegDwight 2010-04-06 15:28:26

8 réponses

vous pouvez faire une section auth dans votre fichier .hgrc ou Mercurial.ini , comme ceci:

[auth]
bb.prefix = https://bitbucket.org/foo/
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 de noms d'utilisateurs/mots de passe avec différents sites (préfixe)

vous pouvez également spécifier seulement le nom d'utilisateur, alors vous aurez juste à taper votre mot de passe lorsque vous poussez.

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

je recommande également de jeter un oeil à la extension de porte-clés . Parce qu'il stocke le mot de passe dans le porte-clés de votre système au lieu d'un fichier texte simple, il est plus sûr. Il est livré avec TortoiseHg sur Windows, et il y a actuellement une discussion sur sa distribution en tant qu'extension groupée sur toutes les plateformes.

314
répondu Laurens Holst 2017-07-03 15:03:44

il y a trois façons de le faire: utilisez le .fichier hgrc, utiliser ssh ou utiliser l'extension keyring



1. La manière non sécurisée-mettez à jour votre ~/.hgrc file

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

[ui]
username=Chris McCauley <chris.mccauley@mydomain.com>

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



Vous pouvez configurer autant de repos que vous le souhaitez en ajoutant plus de triplets de préfixe, nom d'utilisateur, mot de passe en préprogrammant une étiquette unique.

Cela ne fonctionne qu'avec Mercurial 1.3 et évidemment votre nom d'utilisateur et votre mot de passe sont en texte clair - pas bon.



2. La voie sécurisée-utilisez SSH pour éviter d'utiliser des mots de passe

Mercurial prend entièrement en charge SSH de sorte que nous pouvons profiter de la capacité de SSH pour se connecter à un serveur sans mot de passe - vous faites une configuration Une fois off pour fournir un certificat auto-généré. C'est de loin la façon la plus sûre de faire ce que vous voulez.



Vous pouvez trouver plus d'informations sur la configuration de passwordless login ici



3. L'Extension du porte-clés

si vous voulez une option sécurisée, mais que vous ne connaissez pas SSH, pourquoi ne pas essayer ceci?

du docs ...

l'extension invite pour le mot de passe HTTP sur la première pull / push vers / depuis un dépôt distant (comme par défaut), mais sauve le mot de passe (saisi par la combinaison du nom d'utilisateur et de la télécommande URL du dépôt) dans la base de données des mots de passe. Sur la prochaine course, il vérifie pour le nom d'utilisateur .hg/hgrc, puis pour le mot de passe approprié dans le la base de données des mots de passe, et utilise ces informations d'identification si elles sont trouvées.

il y a plus informations détaillées ici

164
répondu Chris McCauley 2016-08-04 00:17:33

personne n'a mentionné l'extension du porte-clés. Il sauvegardera le nom d'utilisateur et le mot de passe dans le porte-clés du système, ce qui est beaucoup plus sûr que de stocker vos mots de passe dans un fichier statique comme mentionné ci-dessus. Effectuez les étapes ci-dessous et vous devriez être bon d'aller. J'ai fait tourner ça sur Ubuntu en 2 minutes.

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

62
répondu user570626 2016-06-10 00:29:54

un hack simple est d'ajouter le nom d'utilisateur et le mot de passe à l'url push dans le fichier .hg/hgrc de votre projet:

[paths]
default = http://username:password@mydomain.com/myproject

(notez que de cette façon vous stockez le mot de passe en clair)

si vous travaillez sur plusieurs projets sous le même domaine, vous pouvez ajouter une règle rewrite dans votre fichier ~/.hgrc , pour éviter de répéter ceci pour tous les projets:

[rewrite]
http.//mydomain.com = http://username:password@mydomain.com

de nouveau, depuis le le mot de passe est stocké en texte clair, je stocke habituellement juste 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 /

28
répondu Roberto Aloi 2010-04-06 11:39:27

personne ci-dessus n'a expliqué/clarifié les termes à un utilisateur novice. Ils se confondent par les Termes

.hg / hgrc -- ce fichier est utilisé pour le dépôt, à l'emplacement local/dans l'espace de travail / dans le dépôt réel .dossier hg.

~/.hgrc -- ce fichier est différent de ci-dessous. ce fichier se trouve dans ~ ou le répertoire de base.

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

C'est une des lignes sous [auth] section / directive, tout en utilisant Mercurial keyring extension. Assurez-vous que le nom de serveur que vous y mettez, correspond avec ce que vous utilisez en faisant "clone hg" sinon keyring dira, utilisateur non trouvé. bb ou myremote dans la ligne ci-dessous, sont "alias name" que vous devez donner tout en faisant "HG clone http:/.../../ repo1 bb ou myremote " sinon, ça ne marchera pas ou vous devez vous assurer que votre dépôt local .le fichier hg/hgrc contient le même alias, c'est-à-dire (ce que vous avez donné en faisant le clone hg .. comme dernier paramètre).

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

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

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

, alors vous ne serez jamais invité pour les informations d'identification de l'utilisateur plus d'une fois par lien de repo http. Dans./~ hgrc Sous [extensions] une ligne pour "mercurial_keyring =" ou "hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py".. l'un de ces lignes devrait être là.

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

j'essaie de trouver comment définir la propriété du préfixe pour que l'utilisateur puisse cloner ou effectuer n'importe quelles opérations Hg sans invites nom d'utilisateur/mot de passe et sans s'inquiéter de ce qu'il a mentionné dans le http://..../... pour servername en utilisant le lien HG repo. Il peut être IP, servername ou server's FQDN

22
répondu Arun Sangal 2018-05-07 17:25:51

mercurial_keyring installation sur Mac OSX utiliser MacPorts:

sudo port install py-keyring
sudo port install py-mercurial_keyring

ajouter ce qui suit à ~/.hgrc:

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

[extensions]
mercurial_keyring =
2
répondu ftvs 2012-09-21 09:38:41

si vous utilisez TortoiseHg vous devez effectuer ces trois étapes indiquées dans la capture d'écran ci-jointe, cela ajouterait vos informations d'identification pour le dépôt 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

Espérons que cette aide.

1
répondu A.B. 2017-07-19 06:50:05

bien que cela puisse ou non fonctionner dans votre situation, j'ai trouvé utile de générer une clé publique / privée en utilisant le concours de Putty.

si vous travaillez aussi avec bitbucket (.org) il devrait vous donner la possibilité de fournir une clé publique à votre compte d'utilisateur et ensuite les commandes qui vont vers le dépôt seront sécurisées automatiquement.

si le concours ne démarre pas pour vous lors d'un redémarrage, vous pouvez ajouter un raccourci à votre Windows "Start menu" et le raccourci peut avoir besoin d'avoir un' Propriétés ' peuplé avec l'emplacement de votre privé (.ppk) fichier.

avec ceci en place Mercurial et vos dépôts locaux devront être configurés pour push / pull en utilisant le format SSH.

voici quelques instructions détaillées sur le site Atlassian Pour Windows ou Mac/Linux.

Vous n'avez pas à prendre mon mot pour lui, et il y a sans doute d'autres façons de le faire. Peut-être ces étapes décrit ici sont plus pour vous:

  1. Start PuttyGen from Start - > PuTTYgen - > PuttyGen
  2. générez une nouvelle clé et sauvegardez-la en tant que A.ppk fichier sans passphrase
  3. utilisez Putty pour vous connecter au serveur auquel vous voulez vous connecter""
  4. ajouter le texte clé publique de PuttyGen au texte de~/.SSH / authorized_keys
  5. créez un raccourci vers votre .fichier ppk du début - > Putty au début - > Startup
  6. sélectionnez le .ppk raccourci à partir du menu de démarrage (cela se produira automatiquement à chaque démarrage)
  7. voir l'icône du concours dans le plateau du système? Droit-cliquez dessus et sélectionnez" nouvelle session "
  8. entrez le nom d'utilisateur@hostname dans le champ "Nom D'hôte
  9. vous allez maintenant vous connecter automatiquement.
0
répondu veeTrain 2016-08-24 11:52:39