Bagaimana cara menyimpan kata sandi saat menggunakan Subversion dari konsol

106

Saya bertanya-tanya apakah ada cara untuk menyimpan kata sandi Subversion saya saat melakukan svnoperasi dari konsol. Konsol adalah satu-satunya pilihan yang saya miliki. Ketika saya mencoba melakukan tindakan Subversion apa pun, misalnya svn commit, ia selalu meminta sandi akun. Adakah cara untuk menyimpan kata sandi ini sehingga saya tidak perlu mengetik ulang setiap saat?

john mcdonald
sumber
Lihat juga tidak dapat membuat kata sandi penyimpanan svn, meskipun konfigurasi diatur untuk mengizinkannya untuk pemecahan masalah jika jawaban yang diterima tidak berfungsi.
maxschlepzig

Jawaban:

110

Masuk ~/.subversion/config, Anda mungkin punya store-passwords = no. Ubah ke yes(atau beri komentar karena defaultnya adalah ya), dan lain kali Anda memberikan kata sandi kepada Subversion, itu akan menyimpannya.

Anda mungkin ingin memastikan bahwa pemilik dan izin ~/.subversion/configsudah benar (tidak ada akses publik atau grup; 600).

Michael Mrozek
sumber
Saya tidak dapat menemukan file ini di Red Hat Linux 2.6.18. tahu dimana itu?
Ish
3
@Ish Anda mungkin perlu membuatnya jika belum ada; Saya pikir SVN terlihat di sana di semua distro
Michael Mrozek
5
+1, Setelah membuat /etc/subversion/configsistem file berfungsi seperti yang diharapkan. Terima kasih
Ish
@IshKumar Terima kasih! Bekerja untuk saya pertama kali!
Anil
15
@Seven Lebih baik lagi, tulis saja jawaban baru yang lebih terkini. ( store-passwordsOpsi masuk configsekarang tidak digunakan lagi, menurut beberapa komentar default yang saya temukan di configfile saya ; itu telah diganti dengan opsi yang sama di servers.)
Kyle Strand
54

Itu tergantung pada protokol yang Anda gunakan. Jika Anda menggunakan SVN + SSH, klien SVN tidak dapat menyimpan kata sandi Anda karena tidak pernah menyentuhnya - klien SSH akan meminta Anda secara langsung. Dalam kasus ini, Anda dapat menggunakan kunci SSH dan ssh-agent untuk menghindari permintaan konstan. Jika Anda menggunakan protokol svnserve atau HTTP (S), maka klien SSH menangani kata sandi Anda dan dapat menyimpannya.

tak seorangpun
sumber
4
+1 Saya mengalami masalah ini - svn + ssh selalu, selalu meminta kata sandi kepada saya. Selain berbagi kunci publik, apakah ada cara untuk menghindari hal ini? Saya telah mencoba ssh-agent, tetapi tidak berhasil.
Michael Mikowski
@MichaelMikowski Sepertinya kata sandi SSH tidak dapat disimpan ke konfigurasi untuk login otomatis. Anda dapat membuat pasangan kunci baru untuknya, menyimpan lokasi kunci pribadi ke .ssh/config, menambahkan kunci publik ke server SVN.
lk_vc
33

Coba bersihkan .subversionfolder Anda di direktori beranda dan coba lakukan lagi. Ini akan meminta Anda untuk memasukkan kata sandi Anda dan kemudian menanyakan Anda apakah Anda ingin menyimpan kata sandi.

Earlz
sumber
Yang Anda maksud adalah folder .subversion!
khmarbaise
3
Saya memiliki masalah yang sama. Saya tidak memiliki setelan sandi penyimpanan apa pun yang disetel ke "tidak" di file konfigurasi atau server saya, tetapi ini berhasil.
Bob B
1
Saya mencoba mengubah semua jenis pengaturan tetapi tidak berhasil. Satu-satunya hal yang pada akhirnya menyelesaikan masalah ini memang menghapus folder .subversion.
Michael Noyb
Ini berhasil juga untuk saya. Menariknya, ini menyimpan kata sandi di dalam folder ~ / .subversion / auth / svn.simple untuk saya.
Chetan
Ini juga berlaku untuk saya, tetapi saya mengamati untuk melihat apa perbedaannya - dan ternyata itu adalah kepemilikan direktori .subversion dan file-nya. Setelah mentransfer data dari komputer lain, direktori ini entah bagaimana akhirnya menjadi milik root, padahal seharusnya itu milik saya. Menghapus direktori dan membiarkan svn membuatnya kembali memperbaiki masalah (tapi chown mungkin akan memperbaikinya juga).
Joe Strout
19

Saya harus mengedit ~/.subversion/servers. Saya mengatur store-plaintext-passwords = yes(tidak ada sebelumnya). Itu berhasil. Ini mungkin dianggap tidak aman.

hajamie
sumber
3
Dalam file yang sama, saya harus mengatur store-passwords = yes. Saya yakin ini sudah disetel sebelumnya, tetapi tidak disetel saat saya memperbarui ke SVN 1.7
pieman72
9

Harap perhatikan paragraf berikut dari ~/.subversion/serversfile:

Baik 'store-password' dan 'store-auth-creds' sekarang dapat ditentukan di file 'server' di direktori konfigurasi Anda. Apa pun yang ditentukan di bagian ini diganti dengan pengaturan yang ditentukan dalam file 'server'.

Setidaknya untuk SVN versi 1.6.12. Jadi ingatlah untuk mengedit file server juga saat menimpa ~/.subversion/config.

Rusu Bogdan
sumber
Itu membantu untuk melihat bahwa ada penimpaan pada file yang sama (dua deklarasi "penyimpanan kata sandi"!). Memperbaiki itu dan file svn.simple dibuat dengan properti gnome-keyring.
Danielson Alves Júnior
5

Jika Anda menggunakan svn + ssh , Anda dapat menyalin kunci ssh publik Anda ke mesin jarak jauh:

ssh-copy-id user@remotehost
Michael Schmid
sumber
5

Bagi saya (pengguna Mac) masalahnya adalah bahwa rantai kunci sudah memiliki entri yang disimpan untuk kredensial saya, tetapi hak aksesnya tidak benar.

Menghapus entri di aplikasi key chain dan membuatnya kembali dengan menggunakan svn memperbaiki masalah.

trias
sumber
4

Tak satu pun dari jawaban luar biasa ini berhasil untuk saya pada instalasi baru Ubuntu. Sebaliknya, petunjuk dari jawaban ini berhasil bagi saya.

Saya harus mengizinkan penyimpanan sandi "sederhana" dengan mengosongkan ini di ~/.subversion/config:

password-stores =

Tidak ada setelan yang ada, jadi mengosongkan itu penting.

Ini sebagai tambahan untuk:

store-passwords = yes

masuk ~/.subversion/servers.

Heath Raftery
sumber
Ini juga membantu saya, karena tampaknya opsi default seharusnya berfungsi, tetapi kecuali ditentukan secara eksplisit, ini tidak :(
Arunas Bartisius
3

Menggunakan teks biasa mungkin bukan pilihan terbaik, jika sandi pernah digunakan sebagai sesuatu yang lain.

Saya mendukung jawaban yang diterima, tetapi itu tidak berhasil untuk saya - untuk alasan yang sangat spesifik: Saya ingin menggunakan salah satu kwalletatau gnome-keyringpenyimpanan kata sandi. Saya mencoba mengubah pengaturan, di seluruh empat file:

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

Bahkan setelah semuanya disetel sama, dengan password-storesdan nama KWallet (default mungkin salah, kan?) Itu tidak berfungsi dan terus meminta kata sandi selamanya. File di ~/.subversionmemiliki izin 600.

Nah, pada saat itu, Anda dapat mencoba memeriksa satu hal sederhana:

which svn

Jika Anda mendapatkan:

/usr/bin/local/svn

maka Anda mungkin curiga dengan kemungkinan besar bahwa klien ini dibangun dari sumber, secara lokal, oleh administrator Anda (yang mungkin Anda sendiri, seperti dalam kasus saya).

Subversion adalah binatang buas untuk dikompilasi , sangat mudah dibuat secara tidak sengaja tanpa dukungan HTTP, atau - seperti dalam contoh saya - tanpa dukungan untuk penyimpanan kata sandi terenkripsi (Anda memerlukan file pengembangan Gnome atau KDE, dan banyak lagi!). Tetapi ./configureskrip tidak akan memberi tahu Anda itu, dan Anda hanya mendapatkan yang kurang fungsionalsvn perintah yang .

Dalam hal ini, Anda dapat kembali ke klien, yang disertakan dengan distribusi Anda, biasanya dalam /usr/bin/svn. Kelemahannya adalah - Anda mungkin perlu memeriksa ulang copy pekerjaan, karena tidak ada svn downgradeperintah. Anda dapat berkonsultasi dengan Linus Torvalds tentang apa yang harus Anda pikirkan tentang Subversion;)

Tomasz Gandor
sumber
2

Untuk menambah jawaban Heath: Sepertinya Subversion 1.6 menonaktifkan penyimpanan kata sandi secara default jika tidak dapat menyimpannya dalam bentuk terenkripsi. Anda dapat mengizinkan penyimpanan sandi yang tidak dienkripsi dengan menyetel secara eksplisit password-stores =(yaitu, ke nilai kosong) di~/.subversion/config .

Untuk memeriksa penggunaan subversi penyimpanan kata sandi, lihat di ~/.subversion/auth/svn.simple. Ini berisi beberapa file, masing-masing tabel hash dengan pengkodean kunci / nilai sederhana. Di svn:realmstringsetiap file mengidentifikasi untuk bidang mana file itu. Jika file memiliki

K 8
passtype
V 6
simple

lalu ia menyimpan kata sandi dalam teks biasa di suatu tempat di file itu, di K 8 passwordentri. Jika tidak, ia mencoba menggunakan salah satu yang dikonfigurasi password-stores.

thakis
sumber
1

Semua metode yang disebutkan di sini tidak berhasil untuk saya. Saya membuat Subversion dari sumber, dan saya menemukan, saya harus menjalankan konfigurasi dengan --enable-plaintext-password-storageuntuk mendukung fitur ini.

Domain
sumber
1

Hanya untuk menekankan apa yang dikatakan Tomasz Gandor dan Domain tentang memiliki versi svn yang benar dan bahwa itu dikompilasi untuk mengaktifkan penyimpanan kata sandi teks biasa, Anda perlu memverifikasi apa yang Anda miliki:

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

Melawan:

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

The following authentication credential caches are available:

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

Setelah Anda melihat bahwa versi svn Anda diaktifkan untuk penyimpanan kata sandi teks biasa, maka terapkan semua jawaban lainnya di sini.

Jim
sumber
1

Saya menggunakan klien TortoiseSVN di Windows, dan untuk saya, menyetel parameter simpan kata sandi sebagai yes in%USERPROFILE%\AppData\Roaming\Subversion\config tidak membantu untuk menyimpan kata sandi.

Kata sandi berhasil disimpan setelah menghapus folder ini (untuk berjaga-jaga jika diganti nama):

%USERPROFILE%\AppData\Roaming\Subversion\auth

Lingkungan Hidup:

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

Sayangnya jawaban tidak menyelesaikan masalah meminta kata sandi untuk ssh + svn dengan kunci pribadi yang dilindungi. Setelah beberapa penelitian saya menemukan:

ssh-add

utilitas jika Anda memiliki komputer Linux. Pastikan Anda menyimpan kunci Anda /home/username/.ssh/dan ketik perintah ini di Terminal.

www
sumber