Trong trường hợp của tôi, tôi muốn thực hiện kiểm tra SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Tuy nhiên, tôi muốn có mật khẩu trong một dòng đó để nó không bật lên.
Trong trường hợp của tôi, tôi muốn thực hiện kiểm tra SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Tuy nhiên, tôi muốn có mật khẩu trong một dòng đó để nó không bật lên.
Câu trả lời:
svn co svn + ssh: // tên người dùng: password@10.106.191.164/home/svn/shproject
Cho rằng bạn đang sử dụng SSH, cách ưa thích là sử dụng khóa chung để ủy quyền, giúp tiết kiệm hoàn toàn nhu cầu về mật khẩu.
Hướng dẫn tạo và cài đặt các phím có thể được tìm thấy ở đây .
Vô cùng tốt hơn là tạo ra một cặp khóa. Là người dùng cục bộ của bạn:
$ ssh-keygen -t rsa
(chấp nhận mọi mặc định)
Sau đó lấy nội dung của .ssh / id_rsa.pub và thêm nó vào máy chủ từ xa vào .ssh / ủy quyền_key Hãy chắc chắn rằng tất cả được dán vào cùng một dòng. Ngoài ra, hãy chắc chắn rằng các quyền của thư mục .ssh là 600.
Sau đó, bạn sẽ có thể ssh mà không cần được nhắc nhập mật khẩu.
Thay vì sử dụng mật khẩu, bạn có thể muốn xem cặp khóa riêng / chung và sử dụng ssh. hầu hết các bản phân phối linux đi kèm với các lệnh dễ sử dụng để tạo một cặp như vậy. tuy nhiên điều này sẽ yêu cầu truy cập ti phía máy chủ (một lần) để gửi tệp khóa công khai trong tệp ~ / .ssh / ủy quyền của người dùng của bạn.
Chà, tôi thực sự muốn nhập mật khẩu - tôi không muốn dựa vào mật khẩu của mình được lưu ở đâu đó; tuy nhiên, tôi muốn nhập nó một lần cho mỗi bộ lệnh svn + ssh; và thông thường, bạn chỉ muốn thực hiện một svn checkout
- và phải nhập hàng tấn mật khẩu. Đó là trong trường hợp như vậy tôi chỉ muốn nhập mật khẩu một lần.
Vì vậy, chỉ có câu trả lời của @Boinst và @Marius có liên quan đến trường hợp sử dụng của tôi; Thật không may, họ đã không giúp đỡ, vì tôi không thể khiến họ làm việc. Tôi tự hỏi nếu chính các tác giả bài viết đã thử các lệnh trước khi đăng chúng, vì bây giờ tôi không thể tưởng tượng được chúng có thể hoạt động như thế nào - đây là một thử nghiệm tôi đã thực hiện trên PC Ubuntu 10.04 của mình (và tôi đã phá vỡ bằng Ctrl-C, mỗi lần tôi nhìn thấy nhắc mật khẩu xuất hiện):
$ 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
Theo như --username/--password
trên svn
dòng lệnh là có liên quan - đó không quan trọng với svn+ssh
, bởi vì nó ssh
hỏi, không svn
:
svn - Subversion bỏ qua các tùy chọn "--password" và "--username" - Stack Overflow
Lời nhắc bạn nhận được không giống như Subversion yêu cầu bạn nhập mật khẩu, có vẻ như ssh yêu cầu mật khẩu.
Ngoài ra, như nhật ký hiển thị, ssh
chính nó không chấp nhận " username:password@...
" trong URL - và do đó cũng không svn
. Tại sao chỉ chấp nhận sử dụng tên người dùng trong URL trong svn
, có thể được giải thích trong ~/.subversion/config
:
### (Nếu URL bao gồm tên người dùng, thì tên máy chủ sẽ được
### được chuyển cho tác nhân đường hầm là @.)
Thông báo không có gì được nói về <user>:<pass>@<hostname>
.
Bây giờ, nhờ vào trang Subversion qua SVN + SSH trên Debian , cuối cùng tôi nhận ra có một SVN_SSH
biến môi trường được sử dụng ~/.subversion/config
cho đường hầm ssh (tôi đoán); và điều đó cuối cùng mở ra khả năng sử dụng chương trình sshpass
để xử lý mật khẩu theo cách một chiều như vậy:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Chà, ít nhất tôi cũng mừng vì cuối cùng tôi cũng tìm được một giải pháp phù hợp với mình - hy vọng điều này cũng sẽ giúp người khác,
Chúc mừng!
Bạn cũng có thể sử dụng tên người dùng và mật khẩu đã cho .
Tham khảo xác thực dòng lệnh .
Tôi nghĩ rằng sử dụng sshpass (trong Linux) là cách tốt nhất để có được điều này.
Cài đặt sshpass
$ sudo apt-get install sshpass
Đặt biến môi trường tạm thời
$ export SSHPASS=*yourpass*
Chỉnh sửa tập tin cấu hình svn
$ nano ~/.subversion/config
Cuối cùng nhận xét thêm sshpass -e
vào dòng ssh, trước ssh
lệnh
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no