Nel mio caso, voglio fare un checkout SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Tuttavia, voglio avere la password in quella riga, in modo che non compaia.
Nel mio caso, voglio fare un checkout SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Tuttavia, voglio avere la password in quella riga, in modo che non compaia.
Risposte:
svn co svn + ssh: // nomeutente: password@10.106.191.164/home/svn/shproject
sshpass
(che funziona per me).
Dato che stai utilizzando SSH, il modo migliore è utilizzare una chiave pubblica per l'autorizzazione, che salva completamente la necessità di una password.
È possibile trovare una guida per la creazione e l'installazione delle chiavi Qui .
Infinitamente migliore è generare una coppia di chiavi. Come tuo utente locale:
$ ssh-keygen -t rsa
(accetta tutti i valori predefiniti)
Quindi prendi il contenuto di .ssh / id_rsa.pub e aggiungilo sul server remoto a .ssh / authorized_keys Assicurati che tutto sia incollato nella stessa riga. Assicurati inoltre che i permessi della directory .ssh siano 600.
Quindi dovresti essere in grado di ssh senza che venga richiesta una password.
Invece di usare una password potresti voler dare un'occhiata a una coppia di chiavi privata / pubblica e far sì che ssh lo usi. la maggior parte delle distribuzioni di Linux sono dotate di comandi facili da usare per creare una tale coppia. ciò richiederebbe comunque l'accesso al lato server (una volta) per depositare il file della chiave pubblica nel file ~ / .ssh / authorized_keys dell'utente.
Bene, io fare voglio inserire una password - non mi piace affidarmi alla mia password salvata da qualche parte; tuttavia, voglio entrarvi una volta per set di comandi svn + ssh; e spesso, vuoi solo farne uno svn checkout
- e devono comunque inserire tonnellate di password. In tal caso, mi piacerebbe digitare una password solo una volta.
Quindi, solo risposte di @Boinst e @Marius erano rilevanti per il mio caso d'uso; sfortunatamente, non hanno aiutato, dato che non riuscivo a farli funzionare. Mi chiedo se gli autori dei post stessi abbiano provato i comandi prima di postarli, poiché ora non riesco a immaginare come potrebbero funzionare - ecco un test che ho fatto localmente sul mio Ubuntu 10.04 PC (e mi interrompo con Ctrl-C, ogni volta che vedo il appare la password):
$ svn --version | head -1
svn, version 1.6.6 (r40053)
$ cd /tmp
$ svnadmin create myrepo
$ read -p 'ssh myself@127.0.0.1? ' PASS
ssh myself@127.0.0.1? [type _PASSWORD_, press ENTER]
## trying first with https://superuser.com/a/71479/39752
# (specify in URL user:pass separated by colon)
## plain ssh - asks for password anyway:
$ ssh myself:$PASS@127.0.0.1
myself:_PASSWORD_@127.0.0.1's password: ^C
# svn - with just username, as expected:
$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
# svn - with password added to URL, asks for password anyway:
$ svn co svn+ssh://myself:$PASS@127.0.0.1/tmp/myrepo myrepo-wc
myself:_PASSWORD_@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
# trying then with https://superuser.com/a/380426/39752, https://superuser.com/a/327822/39752
# (--non-interactive and --username/--password on command line)
# svn - asks for password anyway:
$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
Fino a --username/--password
sopra svn
la linea di comando è interessata - non importa con svn+ssh
, perché è ssh
chiedendo, no svn
:
svn - Subversion che ignora le opzioni "--password" e "--username" - Stack Overflow
Il prompt che stai ottenendo non somiglia a Subversion che ti chiede una password, sembra che ssh chieda una password.
Inoltre, come mostra il registro, ssh
stesso non accetta " username:password@...
"nell'URL - e così neanche svn
. Perché è accettabile utilizzare solo il nome utente nell'URL in svn
, è probabilmente spiegato in ~/.subversion/config
:
### (Se l'URL include un nome utente, sarà il nome host
### passato all'agente tunnel come @.)
Avviso Niente è detto <user>:<pass>@<hostname>
.
Ora, grazie alla pagina Subversion su SVN + SSH su Debian , Ho finalmente capito che c'è un SVN_SSH
variabile d'ambiente utilizzata in ~/.subversion/config
per il tunnel ssh (immagino); e questo apre finalmente la possibilità di usare il programma sshpass
per gestire la password in modo unidirezionale:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Bene, almeno sono felice di aver finalmente trovato una soluzione che funziona per me - spero che questo aiuti anche qualcun altro
Saluti!
Puoi anche utilizzare le opzioni fornite nome utente e parola d'ordine .
Fare riferimento Autenticazione della riga di comando .
Penso che usando sshpass (in Linux) è il modo migliore per ottenere questo.
Installa sshpass
$ sudo apt-get install sshpass
Imposta la variabile di ambiente temporanea
$ export SSHPASS=*yourpass*
Modifica il file di configurazione svn
$ nano ~/.subversion/config
Infine commenta aggiungere sshpass -e
alla linea ssh, prima del ssh
comando
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no