W moim przypadku chcę zrobić kasę SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Chcę jednak mieć hasło w tej jednej linii, aby się nie wyświetlało.
W moim przypadku chcę zrobić kasę SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Chcę jednak mieć hasło w tej jednej linii, aby się nie wyświetlało.
Odpowiedzi:
svn co svn + ssh: // nazwa użytkownika: hasło@10.106.191.164/home/svn/shproject
sshpass
(które działa dla mnie).
Biorąc pod uwagę, że używasz SSH, preferowanym sposobem jest użycie klucza publicznego do autoryzacji, co całkowicie eliminuje potrzebę hasła.
Przewodnik dotyczący tworzenia i instalowania kluczy można znaleźć tutaj .
Nieskończenie lepiej jest wygenerować parę kluczy. Jako lokalny użytkownik:
$ ssh-keygen -t rsa
(zaakceptuj wszystkie wartości domyślne)
Następnie weź zawartość .ssh / id_rsa.pub i dodaj ją na zdalnym serwerze do .ssh / Author_keys. Upewnij się, że wszystko zostało wklejone do tej samej linii. Upewnij się także, że uprawnienia do katalogu .ssh wynoszą 600.
Powinieneś być w stanie ssh bez pytania o hasło.
Zamiast używać hasła, możesz rzucić okiem na parę kluczy prywatny / publiczny i użyć ssh. większość dystrybucji linuksa zawiera łatwe w użyciu polecenia, aby stworzyć taką parę. wymagałoby to jednak dostępu po stronie serwera (jeden raz), aby zdeponować plik klucza publicznego w pliku ~ / .ssh / autoryzowane_kluczy użytkownika.
Cóż, ja nie chcę, aby wprowadzić hasło - Nie lubię polegać na moim hasło zapisane jest gdzieś; chcę jednak wprowadzić go raz na zestaw poleceń svn + ssh; i często po prostu chcesz to zrobić svn checkout
- i tak i tak musisz wprowadzić mnóstwo haseł. W takim przypadku chciałbym wpisać hasło tylko raz.
Tak więc tylko odpowiedzi @Boinst i @Marius były istotne dla mojego przypadku użycia; niestety nie pomogły, ponieważ nie mogłem ich zmusić do pracy. Zastanawiam się, czy sami autorzy postów wypróbowali polecenia przed ich opublikowaniem, ponieważ teraz nie wyobrażam sobie, jak mogłyby one działać - oto test, który zrobiłem lokalnie na moim Ubuntu 10.04 PC (i łamię się przy pomocy Ctrl-C, za każdym razem, gdy widzę pojawia się monit o hasło):
$ 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
Jeśli chodzi --username/--password
o svn
wiersz poleceń - to nie ma znaczenia svn+ssh
, ponieważ ssh
pyta, a nie svn
:
svn - Subversion ignoruje opcje „--password” i „--username” - Przepełnienie stosu
Wyświetlany monit nie wygląda na to, że Subversion prosi o hasło, wygląda na to, że ssh pyta o hasło.
Dodatkowo, jak pokazuje dziennik, ssh
sam nie akceptuje znaku „ username:password@...
” w adresie URL - i też nie svn
. Dlaczego dopuszczalne jest używanie tylko nazwy użytkownika w adresie URL w svn
, prawdopodobnie wyjaśniono w ~/.subversion/config
:
### (Jeśli adres URL zawiera nazwę użytkownika, nazwa hosta zostanie
### przekazana agentowi tunelowemu jako @.)
Zauważ, że nic nie zostało powiedziane <user>:<pass>@<hostname>
.
Teraz, dzięki stronie Subversion nad SVN + SSH na Debianie , w końcu zdałem sobie sprawę, że SVN_SSH
w ~/.subversion/config
tunelu ssh używana jest zmienna środowiskowa ; i to wreszcie otwiera możliwość użycia programu sshpass
do obsługi hasła w taki sposób:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Przynajmniej cieszę się, że w końcu znalazłem rozwiązanie, które działa dla mnie - mam nadzieję, że pomoże to również komuś innemu,
zdrowie!
Możesz także użyć podanej nazwy użytkownika i hasła przełączników .
Myślę, że najlepszym sposobem na uzyskanie tego jest użycie sshpass (w Linuksie).
Zainstaluj sshpass
$ sudo apt-get install sshpass
Ustaw tymczasową zmienną środowiskową
$ export SSHPASS=*yourpass*
Edytuj plik konfiguracyjny svn
$ nano ~/.subversion/config
Na koniec dodaj komentarz sshpass -e
do wiersza ssh przed ssh
poleceniem
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no