Konsoldan Subversion kullanırken parola nasıl kaydedilir


106

svnKonsoldan işlem yaparken Subversion şifremi kaydetmenin bir yolu olup olmadığını merak ediyordum . Konsol, sahip olduğum tek seçenek. Herhangi bir Subversion eylemi yapmaya çalıştığımda, örneğin svn commit, her seferinde hesap parolasını soruyor. Her seferinde yeniden yazmak zorunda kalmamak için bu şifreyi kaydetmenin bir yolu var mı?


Ayrıca , yapılandırma, kabul edilen yanıtın işe yaramaması durumunda sorun gidermeye izin verecek şekilde ayarlanmasına rağmen, svn mağaza parolası yapamama konusuna bakın .
maxschlepzig

Yanıtlar:


110

İçinde ~/.subversion/config, muhtemelen var store-passwords = no. Bunu olarak değiştirin yes(veya varsayılan olarak evet olduğu için sadece yorum yapın) ve Subversion'a bir dahaki sefere şifrenizi verdiğinizde kaydetmeniz gerekir.

Sahibinin ve izinlerinin ~/.subversion/configdoğru olduğundan emin olmak isteyebilirsiniz (genel veya grup erişimi yok; 600).


Bu dosyayı içinde bulamıyorum Red Hat Linux 2.6.18. nerede olabileceği hakkında bir fikriniz var mı?
Ish

3
@Ish Eğer zaten yoksa yapmanız gerekebilir; Bence SVN tüm dağıtımlarda oraya bakıyor
Michael Mrozek

5
+1, Dosya /etc/subversion/configsistemi oluşturulduktan sonra beklendiği gibi çalışır. Teşekkürler
Ish

@IshKumar Teşekkürler! Benim için ilk kez çalıştı!
Anil

15
@Yedi Daha da iyisi, daha güncel olan yeni bir cevap yazın. ( Dosyamda bulduğum bazı varsayılan yorumlara göre içindeki store-passwordsseçeneği configartık kullanımdan kaldırıldı config; konumunda aynı seçenekle değiştirildi servers.)
Kyle Strand

54

Kullandığınız protokole bağlıdır. SVN + SSH kullanıyorsanız, SVN istemcisi şifrenizi kaydedemez çünkü ona asla dokunmaz - SSH istemcisi sizden bunu doğrudan ister. Bu durumda, sürekli istemlerden kaçınmak için bir SSH anahtarı ve ssh-agent kullanabilirsiniz. Svnserve protokolünü veya HTTP (S) kullanıyorsanız, SSH istemcisi şifrenizi işliyor ve kaydedebilir.


4
+1 Tam olarak bu problemim var - svn + ssh her zaman, her zaman benden bir şifre ister. Bir genel anahtarı paylaşmanın dışında, bundan kaçınmanın bir yolu var mı? Ssh-agent'ı denedim ama şansım olmadı.
Michael Mikowski

@MichaelMikowski Görünüyor SSH şifresi otomatik oturum açma için yapılandırmaya kaydedilemez. Bunun için yeni bir anahtar çifti oluşturabilir, özel anahtarın konumunu saklayabilir .ssh/config, genel anahtarı SVN sunucusuna ekleyebilirsiniz.
lk_vc

33

.subversionAna dizininizdeki klasörünüzü temizlemeyi deneyin ve yeniden kaydetmeyi deneyin. Sizden parolanızı sormalı ve ardından parolayı kaydetmek isteyip istemediğinizi sormalıdır.


Bunun yerine .subversion klasörünü kastediyorsunuz!
khmarbaise

3
Ben de aynı sorunu yaşadım. Yapılandırma veya sunucular dosyamda mağaza şifresi ayarlarından hiçbiri "hayır" olarak ayarlanmadı, ancak bu işe yaradı.
Bob B

1
Her türlü ayarı boşuna değiştirmeye çalışıyordum. Sonuçta bu sorunu çözen tek şey .subversion klasörünü silmekti.
Michael Noyb

Bu benim için de çalıştı. İlginç bir şekilde, şifreyi benim için ~ / .subversion / auth / svn.simple klasöründe sakladı.
Chetan

Bu benim için de yaptı, ancak farkın ne olduğunu görmek için izledim - ve .subversion dizini ve dosyalarının sahipliği olduğu ortaya çıktı. Başka bir makineden veri aktardıktan sonra, bu dizin bana ait olması gerektiğinde bir şekilde köke ait oldu. Dizini kaldırmak ve svn'nin onu yeniden oluşturmasına izin vermek sorunu çözdü (ancak chown muhtemelen onu da düzeltirdi).
Joe Strout

19

Düzenlemem gerekiyordu ~/.subversion/servers. Ben ayarladım store-plaintext-passwords = yes(önceden yoktu). Bu hile yaptı. Yine de güvensiz olarak kabul edilebilir.


3
Aynı dosyada ayarlamak zorunda kaldım store-passwords = yes. Önceden ayarlandığına inanıyorum, ancak SVN 1.7'ye güncellediğimde
karmaşa çıktı

9

Lütfen ~/.subversion/serversdosyadaki aşağıdaki paragrafa dikkat edin :

Artık yapılandırma dizininizdeki 'sunucular' dosyasında hem 'mağaza şifreleri' hem de 'mağaza-yetkilendirme kredileri' belirtilebilir. Bu bölümde belirtilen her şey, 'sunucular' dosyasında belirtilen ayarlar tarafından geçersiz kılınır.

En azından SVN 1.6.12 sürümü içindir. Bu nedenle, sunucu dosyasını geçersiz kıldıkça da düzenlemeyi unutmayın ~/.subversion/config.


Bu, aynı dosyada bir geçersiz kılma olduğunu görmeye yardımcı oldu (iki "şifre deposu" bildirimi!). Bu düzeltildi ve svn.simple dosyası gnome-keyring özelliğiyle oluşturuldu.
Danielson Alves Júnior

5

Eğer kullanırsanız svn + ssh , uzak makineye genel ssh anahtarı kopyalayabilirsiniz:

ssh-copy-id user@remotehost

5

Benim için (Mac kullanıcısı) sorun, anahtar zincirinde kimlik bilgilerim için zaten depolanmış bir giriş olmasıydı, ancak erişim hakları doğru değildi.

Anahtar zinciri uygulamasında girişi silmek ve ardından svn kullanarak yeniden oluşturmak sorunu çözdü.


4

Yeni bir Ubuntu yüklemesinde bu harika yanıtların hiçbiri benim için işe yaramadı. Bunun yerine, bu cevaptan bir ipucu benim için hile yaptı.

Bunu şurada boş olarak ayarlayarak "basit" şifre deposuna izin vermem gerekiyordu ~/.subversion/config:

password-stores =

Mevcut bir ayar yoktu, bu yüzden boş olmak önemli.

Bu şunlara ek olarak yapıldı:

store-passwords = yes

içinde ~/.subversion/servers.


Bu, varsayılan seçeneğin çalışması gerektiği gibi bana da yardımcı oldu, ancak açıkça belirtilmediği sürece işe yaramaz :(
Arunas Bartisius

3

Parola başka bir şey olarak kullanılmışsa, düz metin kullanmak en iyi seçenek olmayabilir.

Kabul edilen yanıtı destekliyorum, ancak benim için işe yaramadı - çok özel bir nedenden ötürü: ya kwalletda gnome-keyringparola depolarını kullanmak istedim . Dört dosyanın tamamında ayarları değiştirmeyi denedim:

/etc/subversion/config
/etc/subversion/servers
~/.subversion/config
~/.subversion/servers

Her şey aynı şekilde ayarlandıktan sonra password-storesve KWallet adı (varsayılan olarak yanlış olabilir, değil mi?) İşe yaramadı ve sonsuza kadar şifre sormaya devam etti. Dosyaların ~/.subversionizinleri 600.

Bu noktada, basit bir şeyi kontrol etmeye çalışabilirsiniz:

which svn

Alırsan:

/usr/bin/local/svn

o zaman bu istemcinin yöneticiniz tarafından yerel olarak kaynaktan oluşturulduğundan şüphelenebilirsiniz (benim durumumda olduğu gibi kendiniz de olabilirsiniz).

Subversion, derlemesi kötü bir canavar , yanlışlıkla HTTP desteği olmadan veya - benim örneğimde olduğu gibi - şifreli parola depoları desteği olmadan (Gnome veya KDE geliştirme dosyalarına ihtiyacınız var ve bunların birçoğuna ihtiyacınız var!). Ancak ./configurekomut dosyası size bunu söylemez ve daha az işlevsel bir svnkomut alırsınız .

Bu durumda, genellikle içinde dağıtımınızla birlikte gelen müşteriye geri dönebilirsiniz /usr/bin/svn. Dezavantajı ise - svn downgradekomut olmadığı için muhtemelen çalışma kopyalarını yeniden kontrol etmeniz gerekecek . Subversion hakkında ne düşünmeniz gerektiği konusunda Linus Torvalds'a danışabilirsiniz ;)


2

Heath'in cevabına eklemek için: Subversion 1.6 şifreli biçimde saklayamıyorsa varsayılan olarak şifreleri saklamayı devre dışı bırakmış gibi görünüyor. İçinde açıkça ayarlayarak password-stores =(yani boş değere) şifrelenmemiş parolaların depolanmasına izin verebilirsiniz ~/.subversion/config.

Hangi şifre deposu alt sürümünün kullandığını kontrol etmek için içeri bakın ~/.subversion/auth/svn.simple. Bu, her biri basit bir anahtar / değer kodlamasına sahip bir karma tablo içeren birkaç dosya içerir. svn:realmstringDosya için olduğunu bölge her dosya tanıtır içinde. Dosyada

K 8
passtype
V 6
simple

daha sonra şifreyi o dosyanın bir yerinde, bir K 8 passwordgirişte düz metin olarak saklar . Aksi takdirde, yapılandırılmışlardan birini kullanmaya çalışır password-stores.


1

Burada bahsedilen tüm yöntemler benim için çalışmıyor. Subversion'ı kaynaktan oluşturdum ve --enable-plaintext-password-storagebu özelliği desteklemek için configure betiğini çalıştırmam gerektiğini öğrendim .


1

Tomasz Gandor ve Domain'in doğru svn sürümüne sahip olmakla ilgili söylediklerini ve düz metin parola depolamayı etkinleştirmek için derlendiğini vurgulamak için, sahip olduklarınızı doğrulamanız gerekir:

svn --version
svn, version 1.9.7 (r1800392)
...
WARNING: Plaintext password storage is enabled!
...

The following authentication credential caches are available:

* Plaintext cache in /gr/home/ffvdqb/.subversion
* GPG-Agent

Karşı:

svn --version
svn, version 1.12.2 (r1863366)
...

The following authentication credential caches are available:

* Gnome Keyring
* GPG-Agent
* KWallet (KDE)

Svn sürümünüzün düz metin şifre depolaması için etkinleştirildiğini gördüğünüzde, geri kalan tüm yanıtları burada uygulayın.


1

Ben kullanıyorum TortoiseSVN Windows istemci ve benim için, mağaza-şifreler parametrenizi evet de %USERPROFILE%\AppData\Roaming\Subversion\configşifreyi depolamak için yardıma gelmiyor.

Parola, bu klasörü kaldırdıktan sonra başarıyla kaydedildi (her ihtimale karşı yeniden adlandırma durumunda):

%USERPROFILE%\AppData\Roaming\Subversion\auth

Çevre:

Windows 7, TortoiseSVN 1.7.11 (Build 23600 - 64 bit, 2012-12-12T19:08:52), Subversion 1.7.8.

0

Ne yazık ki yanıtlar, korumalı bir özel anahtarla ssh + svn için parola sorma sorununu çözmedi. Biraz araştırmadan sonra buldum:

ssh-add

Linux bilgisayarınız varsa yardımcı program. Anahtarlarınızı sakladığınızdan emin olun /home/username/.ssh/ve bu komutu Terminal'e yazın.

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.