Come salvare la password quando si usa Subversion dalla console


106

Mi chiedevo se esiste un modo per salvare la mia password Subversion quando eseguo svnoperazioni dalla console. La console è l'unica opzione che ho. Quando provo a eseguire qualsiasi azione Subversion, ad esempio svn commit, ogni volta viene richiesta la password dell'account. C'è un modo per salvare questa password in qualche modo in modo da non doverla riscrivere ogni volta?


Vedi anche impossibile creare una password per svn store, anche se la configurazione è impostata per consentirne la risoluzione dei problemi nel caso in cui la risposta accettata non funzioni.
maxschlepzig

Risposte:


110

In ~/.subversion/config, probabilmente l'hai fatto store-passwords = no. Modificalo in yes(o commentalo semplicemente perché il valore predefinito è sì), e la prossima volta che dai a Subversion la tua password dovrebbe salvarla.

Potresti voler assicurarti che il proprietario e le autorizzazioni di ~/.subversion/configsiano corretti (nessun accesso pubblico o di gruppo; 600).


Non riesco a trovare questo file in Red Hat Linux 2.6.18. qualche idea di dove potrebbe essere?
Ish

3
@Ish Potrebbe essere necessario farlo se non esiste già; Penso che SVN sia presente in tutte le distribuzioni
Michael Mrozek il

5
+1, Dopo aver creato il file /etc/subversion/configsystem funziona come previsto. Grazie
Ish

@IshKumar Thanks! Ha funzionato per me la prima volta!
Anil

15
@Seven Meglio ancora, scrivi una nuova risposta più aggiornata. (L' store-passwordsopzione in configè ora deprecata, secondo alcuni commenti predefiniti che ho trovato nel mio configfile; è stata sostituita dalla stessa opzione in servers.)
Kyle Strand

54

Dipende dal protocollo che stai utilizzando. Se stai usando SVN + SSH, il client SVN non può salvare la tua password perché non la tocca mai: il client SSH te lo richiede direttamente. In questo caso, puoi usare una chiave SSH e ssh-agent per evitare i prompt costanti. Se stai utilizzando il protocollo svnserve o HTTP (S), il client SSH gestisce la tua password e può salvarla.


4
+1 Ho questo problema esatto - svn + ssh sempre, mi chiede sempre una password. Al di fuori della condivisione di una chiave pubblica, c'è un modo per evitarlo? Ho provato ssh-agent, ma senza fortuna.
Michael Mikowski

@MichaelMikowski Sembra che la password SSH non possa essere salvata nella configurazione per l'accesso automatico. È possibile creare una nuova coppia di chiavi, memorizzare la posizione della chiave privata .ssh/config, aggiungere la chiave pubblica al server SVN.
lk_vc

33

Prova a svuotare la .subversioncartella nella directory home e riprova a eseguire il commit. Dovrebbe richiederti la password e poi chiederti se desideri salvare la password.


Intendi invece la cartella .subversion!
khmarbaise

3
Ho avuto lo stesso problema. Non avevo nessuna delle impostazioni della password del negozio impostata su "no" nel file di configurazione o del server, ma ha funzionato.
Bob B

1
Stavo cercando di modificare tutti i tipi di impostazioni senza alcun risultato. L'unica cosa che alla fine ha risolto questo problema è stata proprio l'eliminazione della cartella .subversion.
Michael Noyb

Questo ha funzionato anche per me. È interessante notare che ha memorizzato la password all'interno della cartella ~ / .subversion / auth / svn.simple per me.
Chetan

Questo ha funzionato anche per me, ma ho guardato per vedere quale fosse la differenza - e si è scoperto che era la proprietà della directory .subversion e dei suoi file. Dopo aver trasferito i dati da un'altra macchina, questa directory in qualche modo è finita di proprietà di root, quando dovrebbe essere di mia proprietà. Rimuovere la directory e lasciare che svn la ricreasse ha risolto il problema (ma probabilmente chown l'avrebbe risolto altrettanto bene).
Joe Strout

19

Ho dovuto modificare ~/.subversion/servers. Ho impostato store-plaintext-passwords = yes(non era in precedenza). Quello ha funzionato. Tuttavia, potrebbe essere considerato insicuro.


3
Nello stesso file, ho dovuto impostare store-passwords = yes. Credo che sia stato impostato prima, ma non è stato impostato quando ho aggiornato a SVN 1.7
pieman72

9

Si prega di notare il seguente paragrafo dal ~/.subversion/serversfile:

Sia "store-passwords" che "store-auth-creds" possono ora essere specificati nel file "server" nella directory di configurazione. Tutto ciò che è specificato in questa sezione viene sovrascritto dalle impostazioni specificate nel file "server".

È almeno per la versione SVN 1.6.12. Quindi tieni presente di modificare anche il file del server mentre sovrascrive ~/.subversion/config.


Ciò ha aiutato a vedere che c'era una sovrascrittura nello stesso file (due dichiarazioni di "archivi di password"!). È stato corretto e il file svn.simple è stato creato con la proprietà gnome-keyring.
Danielson Alves Júnior

5

Se usi svn + ssh , puoi copiare la tua chiave ssh pubblica sulla macchina remota:

ssh-copy-id user@remotehost

5

Per me (utente Mac) il problema era che il portachiavi aveva già una voce memorizzata per le mie credenziali, ma i diritti di accesso non erano corretti.

Eliminando la voce nell'app portachiavi e quindi ricrearla utilizzando svn ha risolto il problema.


4

Nessuna di queste meravigliose risposte ha funzionato per me su una nuova installazione di Ubuntu. Invece, un indizio da questa risposta ha fatto il trucco per me.

Ho dovuto consentire l'archiviazione delle password "semplice" impostando questo vuoto in ~/.subversion/config:

password-stores =

Non c'era alcuna impostazione esistente, quindi essere vuoto è significativo.

Questo era in aggiunta a:

store-passwords = yes

in ~/.subversion/servers.


Questo mi ha aiutato anche, poiché sembra che l'opzione predefinita dovrebbe funzionare, ma a meno che non sia specificato esplicitamente, non :(
Arunas Bartisius

3

L'uso del testo in chiaro potrebbe non essere la scelta migliore, se la password viene mai utilizzata come qualcos'altro.

Sostengo la risposta accettata, ma non ha funzionato per me, per un motivo molto specifico: volevo utilizzare uno kwalleto più gnome-keyringarchivi di password. Ho provato a modificare le impostazioni, in tutti e quattro i file:

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

Anche dopo che tutto è stato impostato allo stesso modo, con password-storese il nome di KWallet (l'impostazione predefinita potrebbe essere sbagliato, giusto?) Non ha funzionato e ha continuato a chiedere la password per sempre. I file in ~/.subversionavevano autorizzazioni 600.

Bene, a quel punto, potresti provare a controllare una cosa semplice:

which svn

Se ottieni:

/usr/bin/local/svn

allora potresti sospettare con grande probabilità che questo client sia stato creato dai sorgenti, localmente, dal tuo amministratore (che potresti essere tu stesso, come nel mio caso).

Subversion è una brutta bestia da compilare , molto facile da costruire accidentalmente senza supporto HTTP, o - come nel mio esempio - senza supporto per archivi di password crittografati (hai bisogno di file di sviluppo Gnome o KDE, e molti di loro!). Ma lo ./configurescript non te lo dice e ottieni solo un svncomando meno funzionale .

In tal caso, puoi tornare al client, fornito con la tua distribuzione, di solito in formato /usr/bin/svn. Lo svantaggio è che probabilmente dovrai ricontrollare le copie funzionanti, poiché non è presente alcun svn downgradecomando. Puoi comunque consultare Linus Torvalds su cosa pensare di Subversion;)


2

Da aggiungere alla risposta di Heath: Sembra che Subversion 1.6 abbia disabilitato la memorizzazione delle password per impostazione predefinita se non è in grado di memorizzarle in forma crittografata. È possibile consentire l'archiviazione di password non crittografate impostando esplicitamente password-stores =(ovvero, sul valore vuoto) in ~/.subversion/config.

Per verificare quale archivio di password utilizza subversion, guarda in ~/.subversion/auth/svn.simple. Questo contiene diversi file, ciascuno una tabella hash con una semplice codifica chiave / valore. Il svn:realmstringin ogni file identifica a quale ambito si trova quel file. Se il file ha

K 8
passtype
V 6
simple

quindi memorizza la password in testo normale da qualche parte in quel file, in una K 8 passwordvoce. Altrimenti, prova a utilizzare uno dei file configurati password-stores.


1

Tutti i metodi menzionati qui non funzionano per me. Ho creato Subversion dai sorgenti e ho scoperto che devo eseguire configure con --enable-plaintext-password-storageper supportare questa funzionalità.


1

Solo per sottolineare ciò che Tomasz Gandor e Domain hanno detto sull'avere la versione corretta di svn e che è stata compilata per abilitare l'archiviazione delle password in testo normale, è necessario verificare cosa si ha:

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

Contro:

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

The following authentication credential caches are available:

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

Una volta che vedi che la tua versione di svn è stata abilitata per l'archiviazione delle password in testo normale, applica qui tutte le altre risposte.


1

Sto usando il client TortoiseSVN su Windows e, per me, l'impostazione del parametro store-passwords come yes in %USERPROFILE%\AppData\Roaming\Subversion\confignon aiuta a memorizzare la password.

La password è stata salvata con successo dopo aver rimosso questa cartella (solo nel caso in cui venga rinominata):

%USERPROFILE%\AppData\Roaming\Subversion\auth

Ambiente:

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

0

Purtroppo le risposte non hanno risolto il problema della richiesta di password per ssh + svn con chiave privata protetta. Dopo alcune ricerche ho trovato:

ssh-add

utilità se hai un computer Linux. Assicurati di avere le tue chiavi memorizzate /home/username/.ssh/e digita questo comando su Terminale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.