Dalam kasus saya, saya ingin melakukan checkout SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Namun, saya ingin memiliki kata sandi di satu baris itu, sehingga tidak muncul.
Dalam kasus saya, saya ingin melakukan checkout SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Namun, saya ingin memiliki kata sandi di satu baris itu, sehingga tidak muncul.
Jawaban:
svn co svn + ssh: // username: password@10.106.191.164/home/svn/shproject
Karena Anda menggunakan SSH, cara yang disukai adalah menggunakan kunci publik untuk otorisasi, yang menghemat kebutuhan kata sandi sepenuhnya.
Panduan untuk membuat dan memasang kunci dapat ditemukan di sini .
Jauh lebih baik adalah menghasilkan keypair. Sebagai pengguna lokal Anda:
$ ssh-keygen -t rsa
(terima semua default)
Kemudian ambil konten .ssh / id_rsa.pub dan tambahkan di server jarak jauh ke .ssh / official_keys. Pastikan semuanya disisipkan ke baris yang sama. Juga pastikan izin direktori .ssh adalah 600.
Maka Anda harus dapat ssh tanpa diminta kata sandi.
Alih-alih menggunakan kata sandi, Anda mungkin ingin melihat pada pasangan kunci publik / publik dan ssh menggunakannya. kebanyakan distribusi linux datang dengan perintah yang mudah digunakan untuk membuat pasangan semacam itu. namun ini membutuhkan akses ke sisi server (sekali) untuk menyetor file kunci publik di file ~ / .ssh / otor_keys pengguna Anda.
Yah, aku tidak ingin memasukkan password - saya tidak suka bergantung pada kata sandi yang disimpan di suatu tempat; namun, saya ingin memasukkannya sekali per set perintah svn + ssh; dan seringkali, Anda hanya ingin melakukannya svn checkout
- dan harus memasukkan banyak kata sandi. Dalam hal ini saya hanya ingin mengetikkan kata sandi.
Jadi, hanya jawaban oleh @Boinst dan @Marius yang relevan untuk kasus penggunaan saya; Sayangnya, mereka tidak membantu, karena saya tidak bisa membuat mereka bekerja. Saya bertanya-tanya apakah penulis posting sendiri mencoba perintah sebelum mempostingnya, karena sekarang saya tidak bisa membayangkan bagaimana mereka bisa bekerja - inilah tes yang saya lakukan secara lokal pada Ubuntu 10,04 PC saya (dan saya putus dengan Ctrl-C, setiap kali saya melihat kata sandi muncul):
$ 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
Sejauh --username/--password
pada svn
baris perintah yang bersangkutan - yang tidak peduli dengan svn+ssh
, karena itu ssh
meminta, tidak svn
:
svn - Subversion mengabaikan opsi "--password" dan "--username" - Stack Overflow
Prompt yang Anda peroleh sepertinya Subversion tidak meminta kata sandi, sepertinya ssh meminta kata sandi.
Selain itu, seperti yang ditunjukkan oleh log, ssh
itu sendiri tidak menerima " username:password@...
" di URL - dan begitu juga tidak svn
. Mengapa hanya dapat menggunakan nama pengguna di URL svn
, mungkin dijelaskan dalam ~/.subversion/config
:
### (Jika URL menyertakan nama pengguna, maka nama host akan
### diteruskan ke agen terowongan sebagai @.)
Perhatikan tidak ada yang dikatakan tentang <user>:<pass>@<hostname>
.
Sekarang, berkat halaman Subversi lebih dari SVN + SSH di Debian , saya akhirnya menyadari ada SVN_SSH
variabel lingkungan yang digunakan ~/.subversion/config
untuk terowongan (saya kira) ssh; dan yang akhirnya membuka kemungkinan untuk menggunakan program sshpass
untuk menangani kata sandi sedemikian rupa satu arah:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Ya, setidaknya saya senang akhirnya menemukan solusi yang berfungsi untuk saya - semoga ini membantu orang lain juga,
Ceria!
Anda juga dapat menggunakan sakelar nama pengguna dan kata sandi yang diberikan .
Lihat otentikasi baris perintah .
Saya pikir menggunakan sshpass (di Linux) adalah cara terbaik untuk mendapatkan ini.
Instal sshpass
$ sudo apt-get install sshpass
Setel variabel lingkungan sementara
$ export SSHPASS=*yourpass*
Edit file konfigurasi svn
$ nano ~/.subversion/config
Akhirnya komentar tambahkan sshpass -e
ke ssh line, sebelum ssh
perintah
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no