Mercurial ile kullanıcı adı ve şifre nasıl kaydedilir?


269

Mercurial'ı kişisel bir projede kullandım ve sunucuya her şey itmek istediğimde kullanıcı adımı ve şifremi yazıyorum.

Aşağıdaki bilgileri .hgrcana dizindeki dosyaya eklemeyi denedim , ancak tamamen yok sayılıyor gibi görünüyor.

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

Bunu doğru şekilde nasıl yapabilirim?

Yanıtlar:


328

Dosyanızda .hgrcveya Mercurial.inidosyanızda şu şekilde bir yetkilendirme bölümü oluşturabilirsiniz :

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

'Bb' bölümü isteğe bağlı bir tanımlayıcıdır ve öneki kullanıcı adı ve şifreyle eşleştirmek için kullanılır - farklı sitelerle farklı kullanıcı adı / şifre kombinasyonlarını yönetmek için kullanışlıdır (önek)

Ayrıca yalnızca kullanıcı adını belirtebilirsiniz, o zaman ittiğinizde parolanızı yazmanız yeterlidir.

Ayrıca anahtarlık uzantısına bir göz atmanızı tavsiye ederim . Parolayı düz metin dosyası yerine sisteminizin anahtarlığında sakladığından, daha güvenlidir. Windows'ta TortoiseHg ile birlikte gelir ve şu anda tüm platformlarda paketlenmiş bir uzantı olarak dağıtılması hakkında bir tartışma var.


3
Neden sunucu şu durumda çalışmaz: ssh: // HGSERVER? "ssh: // kullanıcı adı: şifre @ HGSERVER" biçimi de çalışmıyor ..
Ören

1
@Oren - aşağıdaki yoruma bakın - SSH kullanıyorsanız, neden anahtar tabanlı giriş kullanmıyorsunuz?
David Eads

@santafebound Metnin dediği gibi, onun "keyfi" ve sadece kullanıcı adı ve parolayı önek ile ilişkilendirmek için kullanılır, bu yüzden size mantıklı gelen herhangi bir etiketi sağlayın.
Chris McCauley

Gerçekten parolaları düz metin olarak saklamanızı tavsiye etmem (kısaca daha iyi bir alternatiften bahsediyor olsa bile, bu cevap ne yapar).
Jasper

170

Bunu yapmanın üç yolu vardır: .hgrc dosyasını kullanın, ssh kullanın veya anahtarlık uzantısını kullanın


1. INSECURE yöntemi - ~ / .hgrc dosyanızı güncelleyin

Benim için çalışan biçim (~ / .hgrc dosyamda) şu

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

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


Benzersiz bir etiket ekleyerek daha fazla önek, kullanıcı adı, şifre üçlüsü ekleyerek istediğiniz sayıda depo yapılandırabilirsiniz.

Bu yalnızca Mercurial 1.3'te çalışır ve kullanıcı adınız ve şifreniz düz metindir - iyi değildir.


2. Güvenli yol - Şifreleri kullanarak KAÇINMAK SSH kullanın

Mercurial SSH'yi tam olarak destekler, böylece SSH'nin şifre olmadan bir sunucuya giriş yapma yeteneğinden faydalanabiliriz - kendi kendine oluşturulan bir sertifika sağlamak için bir kez kapalı yapılandırma yaparsınız. Bu, istediğinizi yapmanın en güvenli yoludur.


Parolasız oturum açmayı yapılandırma hakkında daha fazla bilgiyi burada bulabilirsiniz


3. Anahtarlık Uzantısı

Güvenli bir seçenek istiyorsanız, ancak SSH'ye aşina değilseniz, neden bunu denemiyorsunuz?

Dokümanlardan ...

Eklenti, verilen uzak depoya ilk çekme / aktarma işleminden ilk çekme / aktarma işleminde HTTP şifresini ister (tıpkı varsayılan olarak yapıldığı gibi), ancak şifreyi (kullanıcı adı ve uzak depo URL'si kombinasyonu ile şifrelenir) şifre veritabanına kaydeder. Bir sonraki çalıştırmada .hg / hgrc içindeki kullanıcı adını kontrol eder, ardından şifre veritabanında uygun şifreyi kontrol eder ve bulunursa bu kimlik bilgilerini kullanır.

Burada daha ayrıntılı bilgi var


3
Satoru, Chris mercurial hakkında konuşmuyor, ancak ssh: ssh hakkında bir parola kullanarak kendinizi tanımlamanıza gerek kalmayacak şekilde ayarlanabilir (örneğin burada açıklandığı gibi: debian-administration.org/articles/152 ).
Tomislav Nakic-Alfirevic

4
Yöntem 2, işleri güvenli bir şekilde ele almanın ve uzak sistemdeki kullanıcı düzeyinde izinleri korumanın tek yoludur.
Peter Rowell

2
user570626'nın anahtarlık entegrasyonunu kullanma yanıtı bunlardan çok daha iyidir. @Peter Rowell: Birkaç kullanıcı ve havuzunuz varsa ssh kurulumu gerçek bir acıdır; yerel unix kullanıcılarına ihtiyacınız var ve .ssh / yetkili_anahtarları ve bir kabuk sarmalayıcı ile çalıştırılabilen komutları kısıtlamakla uğraşmak zorundasınız. Tam olarak temiz bir çözüm değil.
Draemon

5
@Peter Rowell: 1. Bu ne fark eder? Çözümünün daha erken değil daha iyi olduğunu söyledim. 2. Barındırma ortamı ile ilgisi yoktur, tamamen istemci tarafıdır (bunu desteklemek için sunucu tarafında değişiklik gerektiren SSH çözümünüzün aksine). 3. Trolling ve övünme üzerine parlamak, hala temiz bir çözüm olmadığını söylüyorum. Yerel bir kullanıcıya ihtiyacınız var ve onlara kabuk erişimi vermeli ve bunu kısıtlamalısınız. Kabuk erişimi her zaman mantıklı bir seçenek değildir. Deneyiminizden birinin hizmet kabuğuna erişim vermek istemeyen bir sistem yöneticisine rastlamamasına şaşırdım.
Draemon

2
@Demon: Sanırım farklı deneyimlerimiz var. Şahsen, kabuk istemi olmayan bir sistem üzerinde çalışmayacağım. İhtiyacım olanı kurmuş olmak beni tamamen diğer sisteme bağımlı kılıyor. Genel deneyimim, eğer bir bilgi istemezsem, iş akışım için temel olduğunu düşündüğüm diğer hizmetleri neredeyse kesinlikle alamıyorum. Farklı insanlar için farklı (tuş) vuruşları.
Peter Rowell

65

Hiç kimse anahtarlık uzantısından bahsetmedi. Kullanıcı adını ve şifreyi, yukarıda belirtildiği gibi, şifrelerinizi statik bir dosyada saklamaktan çok daha güvenli olan sistem anahtarlığına kaydedecektir. Aşağıdaki adımları uygulayın ve gitmek için iyi olmalısınız. Bu kadar ve yaklaşık 2 dakika içinde Ubuntu üzerinde çalışan vardı.

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


1
Bu benim en sevdiğim çözüm. ... ve @hadrien'in söylediklerine ikinci olarak, açıklanan üç eylemden sonra Mac OS X'te bir cazibe gibi çalışıyor.
ngeek

Ayrıca beni ikinci kez takip ettiğim için @ngeek!
Hadrien

Windows'ta en azından TortoiseHg anahtarlık uzantısını destekler: Global Ayarlar -> Uzantılar -> mercurial_keyring
user272735

Ne yazık ki şu anda anahtarlık uzantısının Windows'ta bir kerede yalnızca bir parola kaydedebileceği bir hata var. Bu soruya bakın .
Laurens Holst

Bu en iyi çözüm gibi görünüyor, ancak OSX'te kullanmaya çalıştığımda, anahtarlıktan şifreyi almaya çalışırken python segfaults.
Isaac

30

Basit bir kesmek, projenizin .hg/hgrcdosyasında push url'ye kullanıcı adı ve şifre eklemektir :

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

(Bu şekilde şifreyi düz metin olarak sakladığınızı unutmayın)

Aynı alan adı altında birkaç proje üzerinde çalışıyorsanız, bunu tüm projeler için tekrar etmemek için dosyanıza bir yeniden yazma kuralı eklemek isteyebilirsiniz ~/.hgrc:

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

Yine, şifre düz metin olarak saklandığından, genellikle sadece kullanıcı adımı saklarım.

Gnome altında çalışıyorsanız Mercurial ve Gnome Keyring'i buraya nasıl entegre edeceğinizi açıklarım:

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


Ben ancak, uzantı indirmiş, şifre istemi beni :( ben o ben önce Gnome Anahtarlık kullanılmış hiç yanlış bir şekilde yapmış Olabilir geçmesine izin reddeden bir çaba göstermesi çalıştığında hepsi aynı teşekkür ederiz...
satoru

Neyin yanlış gittiğini görmek için hg push --debug ve --verbose seçeneklerini kullanmak isteyebilirsiniz ...
Roberto Aloi

elinizdeki dava için mükemmel ... ssh kullanıyorsanız, bir parola girmeniz gerekmez ... anahtarları budur
beauXjames

Tabii ki genel anahtarı çıkarabileceğiniz bir cihazın lüksüne sahip olduğunuzu varsayarsak.
David Verilen

23

Yukarıdaki NOBODY acemi bir kullanıcıya açıkladı / açıkladı. Şartlar karıştı

.hg / hgrc - bu dosya Havuz için, yerel / çalışma alanı konumunda / gerçek deponun .hg klasöründe kullanılır.

~ / .hgrc - bu dosya aşağıdakilerden farklıdır. bu dosya ~ veya home dizininde bulunur.

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

Bu, mercurial keyring eklentisini kullanırken [auth] bölümü / yönergesi altındaki satırlardan biridir. Oraya koyduğunuz sunucu adının "hg clone" yaparken kullandığınızla eşleştiğinden emin olun, aksi takdirde anahtarlık kullanıcı bulunamadı. bb veya aşağıdaki satırda myremote, "hg klon http: /.../../ repo1 bb veya myremote" yaparken vermeniz gereken "takma ad" vardır, aksi takdirde işe yaramaz veya yerel emin olmak zorunda deponun .hg / hgrc dosyası aynı diğer adı içerir, yani (hg klonu yaparken verdikleriniz .. son parametre olarak).

PS, hızlı bir şekilde yazılmış dilbilgisi için üzgünüm, net ayrıntılar için aşağıdaki bağlantıları.

ör .: Windows / ~ .hgrc (Linux / Unix'te kullanıcının ana dizini) veya kullanıcının ana dizinindeki Windows'ta mercurial.ini içeriyorsa, aşağıdaki satırı içerir ve

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

, hiçbir zaman http repo bağlantısı için bir kereden fazla kullanıcı kimlik bilgileri istenmez. ~ / .Hgrc içinde [uzantılar] altında "mercurial_keyring =" veya "hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py" için bir satır olmalıdır. Bu satırlardan biri orada olmalıdır.

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

Ben kullanıcı klonlamak veya kullanıcı adı / şifre istemleri olmadan ve http: // .... / ... ne söz endişe olmadan herhangi bir Hg işlemleri gerçekleştirmek için PREFIX özelliği ayarlamak için nasıl bulmaya çalışıyorum Hg repo bağlantısını kullanırken sunucuadı. IP, sunucuadı veya sunucunun FQDN'si olabilir


4

MacPorts kullanarak Mac OSX'te mercurial_keyring kurulumu:

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

Aşağıdakileri ~ / .hgrc dizinine ekleyin:

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

[extensions]
mercurial_keyring =

Bu komutları çalıştırıp .hgrc dosyamı güncelledikten sonra TortoiseHg'de "mercurial_keyring adında bir modül" almıyorum.
Dunc

Burada açıklandığı gibi doğru Python sürümüne sahip olduğunuzdan emin olun: stackoverflow.com/questions/5173197/…
phm

2

TortoiseHg kullanıyorsanız, ekli ekran görüntüsünde gösterilen bu üç adımı gerçekleştirmeniz gerekir, bu, çalıştığınız belirli depo için kimlik bilgilerinizi ekler.

resim açıklamasını buraya girin

Genel ayarlar eklemek için C: \ users \ user.name \ mercurial.ini dosyasına erişebilir ve bölümü ekleyebilirsiniz.

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

Bu yardımcı olur umarım.


0

Durumunuzda işe yarayıp yaramasa da, Putty's Pageant'ı kullanarak bir genel / özel anahtar oluşturmayı yararlı buldum.

Ayrıca bitbucket (.org) ile çalışıyorsanız, kullanıcı hesabınıza ortak bir anahtar sağlama yeteneği vermeli ve daha sonra depoya ulaşan komutlar otomatik olarak güvence altına alınacaktır.

Yeniden başlatma sırasında Pageant sizin için başlatılmazsa, Windows "Başlat menünüze" Pageant'a bir kısayol ekleyebilirsiniz ve bu kısayolun özel (.ppk) dosyanızın konumu ile doldurulmuş bir "özellik" olması gerekebilir .

Bu durumda Mercurial ve yerel depolarınızın SSH biçimini kullanarak itme / çekme için ayarlanması gerekir.

Atlassian'ın Windows VEYA Mac / Linux için sitesinde bazı ayrıntılı talimatlar .

Bunun için benim sözümü almak zorunda değilsiniz ve şüphesiz bunu yapmanın başka yolları da yok. Belki burada açıklanan bu adımlar sizin için daha fazladır:

  1. PuttyGen'i Başlat -> PuTTY-> PuttyGen'den başlatın
  2. Yeni bir anahtar oluşturun ve parola olmadan .ppk dosyası olarak kaydedin
  3. Bağlanmak istediğiniz sunucuda oturum açmak için Putty'yi kullanın
  4. PuttyGen'den Genel Anahtar metnini ~ / .ssh / yetkili_anahtarlar metnine ekleyin
  5. .Ppk dosyanıza Başlat -> Macundan Başlat -> Başlangıçtan bir kısayol oluşturun
  6. Başlangıç ​​menüsünden .ppk kısayolunu seçin (bu her başlangıçta otomatik olarak gerçekleşir)
  7. Sistem tepsisindeki Sayfa göstergesine bakın? Sağ tıklayın ve “Yeni oturum” u seçin
  8. "Ana bilgisayar adı" alanına kullanıcı adı @ ana bilgisayar adını girin
  9. Şimdi otomatik olarak giriş yapacaksınız.

0

Anahtarlık uzantısı kullanın. Aşağıdaki girişi mercurial.ini dosyasına ekleyin.

[uzantılar] mercurial_keyring =

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.