Cách lưu mật khẩu khi sử dụng Subversion từ bảng điều khiển


106

Tôi đã tự hỏi liệu có cách nào để lưu mật khẩu Subversion của mình khi thực hiện các svnthao tác từ bảng điều khiển không. Bàn điều khiển là lựa chọn duy nhất mà tôi có. Khi tôi cố gắng thực hiện bất kỳ hành động Subversion nào, ví dụ: svn commitnó sẽ nhắc nhập mật khẩu tài khoản mọi lúc. Có cách nào để lưu mật khẩu này để tôi không phải gõ lại mật khẩu mỗi lần không?


Xem cũng không thể tạo mật khẩu cửa hàng svn, mặc dù cấu hình được đặt để cho phép nó xử lý sự cố trong trường hợp câu trả lời được chấp nhận không hoạt động.
maxschlepzig

Câu trả lời:


110

Trong ~/.subversion/config, bạn có thể có store-passwords = no. Thay đổi nó thành yes(hoặc chỉ cần bình luận vì nó mặc định là có) và lần sau khi bạn cung cấp mật khẩu cho Subversion, nó sẽ lưu nó.

Bạn có thể muốn đảm bảo rằng chủ sở hữu và các quyền của ~/.subversion/configlà chính xác (không có quyền truy cập công khai hoặc nhóm; 600).


Tôi không thể tìm thấy tệp này trong Red Hat Linux 2.6.18. bất kỳ ý tưởng nơi nó có thể được?
Ish

3
@Ish Bạn có thể cần phải tạo nó nếu nó chưa tồn tại; Tôi nghĩ rằng SVN trông có trong tất cả các distro
Michael Mrozek

5
+1, Sau khi tạo /etc/subversion/confighệ thống tệp hoạt động như mong đợi. Cảm ơn
Ish

@IshKumar Cảm ơn! Làm việc cho tôi lần đầu tiên!
Anil

15
@Seven Tốt hơn hết, chỉ cần viết một câu trả lời mới cập nhật hơn. (Các store-passwordstùy chọn trong confighiện đang bị phản đối, theo một số ý kiến mặc định tôi tìm thấy trong tôi configtập tin, nó đã được thay thế bằng các tùy chọn tương tự trong servers.)
Kyle Strand

54

Nó phụ thuộc vào giao thức bạn đang sử dụng. Nếu bạn đang sử dụng SVN + SSH, máy khách SVN không thể lưu mật khẩu của bạn vì nó không bao giờ chạm vào nó - máy khách SSH sẽ nhắc bạn trực tiếp. Trong trường hợp này, bạn có thể sử dụng khóa SSH và ssh-agent để tránh các lời nhắc liên tục. Nếu bạn đang sử dụng giao thức svnserve hoặc HTTP (S), thì máy khách SSH đang xử lý mật khẩu của bạn và có thể lưu mật khẩu đó.


4
+1 Tôi gặp sự cố chính xác này - svn + ssh luôn, luôn hỏi tôi mật khẩu. Ngoài chia sẻ khóa công khai, có cách nào để tránh điều này không? Tôi đã thử ssh-agent, nhưng không may mắn.
Michael Mikowski

@MichaelMikowski Có vẻ như không thể lưu mật khẩu SSH để cấu hình đăng nhập tự động. Bạn có thể tạo một cặp khóa mới cho nó, lưu trữ vị trí của khóa cá nhân .ssh/config, nối khóa công khai vào máy chủ SVN.
lk_vc

33

Hãy thử xóa .subversionthư mục của bạn trong thư mục chính và thử xác nhận lại. Nó sẽ nhắc bạn nhập mật khẩu và sau đó hỏi bạn có muốn lưu mật khẩu không.


Thay vào đó, ý bạn là thư mục .subversion!
khmarbaise

3
Tôi đã từng gặp vấn đề tương tự. Tôi không có bất kỳ cài đặt mật khẩu cửa hàng nào được đặt thành "không" trong tệp cấu hình hoặc máy chủ của mình, nhưng điều này đã hoạt động.
Bob B

1
Tôi đã cố gắng thay đổi tất cả các loại cài đặt nhưng không có kết quả. Điều duy nhất cuối cùng giải quyết được vấn đề này là xóa thư mục .subversion.
Michael Noyb

Cái này cũng có tác dụng với tôi. Điều thú vị là nó đã lưu trữ mật khẩu bên trong thư mục ~ / .subversion / auth / svn.simple cho tôi.
Chetan

Điều này cũng làm được điều đó đối với tôi, nhưng tôi đã theo dõi để biết sự khác biệt là gì - và hóa ra nó là quyền sở hữu thư mục .subversion và các tệp của nó. Sau khi chuyển dữ liệu từ một máy khác, bằng cách nào đó, thư mục này đã thuộc quyền sở hữu của người chủ, khi nó đáng lẽ thuộc sở hữu của tôi. Xóa thư mục và để svn tạo lại nó đã khắc phục sự cố (nhưng chown có lẽ cũng đã khắc phục được nó).
Joe Strout

19

Tôi đã phải chỉnh sửa ~/.subversion/servers. Tôi đã đặt store-plaintext-passwords = yes(trước đây không có). Đó là mẹo. Tuy nhiên, nó có thể được coi là không an toàn.


3
Trong cùng một tệp, tôi phải đặt store-passwords = yes. Tôi tin rằng nó đã được thiết lập trước đó, nhưng đã unset khi tôi cập nhật để SVN 1,7
pieman72

9

Vui lòng lưu ý đoạn sau từ ~/.subversion/serverstệp:

Cả 'mật khẩu cửa hàng' và 'tín dụng cửa hàng' hiện có thể được chỉ định trong tệp 'máy chủ' trong thư mục cấu hình của bạn. Mọi thứ được chỉ định trong phần này đều bị ghi đè bởi các cài đặt được chỉ định trong tệp 'máy chủ'.

Nó ít nhất dành cho phiên bản SVN 1.6.12. Vì vậy, hãy nhớ chỉnh sửa tệp máy chủ khi nó ghi đè ~/.subversion/config.


Điều đó giúp thấy rằng có một ghi đè trên cùng một tệp (hai khai báo "cửa hàng mật khẩu"!). Đã sửa lỗi đó và tệp svn.simple đã được tạo bằng thuộc tính gnome-keyring.
Danielson Alves Júnior

5

Nếu bạn sử dụng svn + ssh , bạn có thể sao chép khóa ssh công cộng của mình vào máy từ xa:

ssh-copy-id user@remotehost

5

Đối với tôi (người dùng Mac), vấn đề là chuỗi khóa đã có một mục nhập được lưu trữ cho thông tin đăng nhập của tôi, nhưng quyền truy cập không đúng.

Xóa mục nhập trong ứng dụng chuỗi khóa và sau đó tạo lại nó bằng cách sử dụng svn đã khắc phục sự cố.


4

Không có câu trả lời tuyệt vời nào phù hợp với tôi trên bản cài đặt Ubuntu mới. Thay vào đó, một manh mối từ câu trả lời này đã giúp tôi.

Tôi đã phải cho phép lưu trữ mật khẩu "đơn giản" bằng cách đặt trống trong ~/.subversion/config:

password-stores =

Không có cài đặt nào hiện có, vì vậy việc trống là rất quan trọng.

Điều này bổ sung cho:

store-passwords = yes

trong ~/.subversion/servers.


Điều này cũng giúp tôi, có vẻ như tùy chọn mặc định sẽ hoạt động, nhưng trừ khi được chỉ định rõ ràng, nó không :(
Arunas Bartisius

3

Sử dụng bản rõ có thể không phải là lựa chọn tốt nhất, nếu mật khẩu đã từng được sử dụng như một thứ khác.

Tôi ủng hộ câu trả lời được chấp nhận, nhưng nó không phù hợp với tôi - vì một lý do rất cụ thể: tôi muốn sử dụng một trong hai kwallethoặc gnome-keyringcửa hàng mật khẩu. Tôi đã thử thay đổi cài đặt, tất cả bốn tệp:

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

Ngay cả sau khi tất cả đều được đặt giống nhau, với password-storesvà tên KWallet (mặc định có thể sai, đúng không?) Nó vẫn không hoạt động và liên tục yêu cầu mật khẩu mãi mãi. Các tệp trong ~/.subversioncó quyền 600.

Tại thời điểm đó, bạn có thể thử kiểm tra một điều đơn giản:

which svn

Nếu bạn nhận được:

/usr/bin/local/svn

thì bạn có thể nghi ngờ rất nhiều khả năng rằng ứng dụng khách này được xây dựng từ nguồn, cục bộ, bởi quản trị viên của bạn (có thể là chính bạn, như trong trường hợp của tôi).

Subversion là một con thú khó chịu để biên dịch , rất dễ vô tình xây dựng mà không hỗ trợ HTTP, hoặc - như trong ví dụ của tôi - không hỗ trợ các kho lưu trữ mật khẩu được mã hóa (bạn cần tệp phát triển Gnome hoặc KDE và rất nhiều tệp trong số đó!). Nhưng ./configuretập lệnh sẽ không cho bạn biết điều đó, và bạn chỉ nhận được một svnlệnh ít chức năng hơn .

Trong trường hợp đó, bạn có thể quay lại khách hàng đi kèm với bản phân phối của bạn, thường là trong /usr/bin/svn. Nhược điểm là - bạn có thể cần phải kiểm tra lại các bản sao đang hoạt động, vì không có svn downgradelệnh. Dù sao thì bạn cũng có thể tham khảo ý kiến ​​của Linus Torvalds về suy nghĩ của mình về Subversion;)


2

Để thêm vào câu trả lời của Heath: Có vẻ như Subversion 1.6 đã tắt tính năng lưu trữ mật khẩu theo mặc định nếu nó không thể lưu trữ chúng ở dạng mã hóa. Bạn có thể cho phép lưu trữ mật khẩu không được mã hóa bằng cách đặt rõ ràng password-stores =(nghĩa là thành giá trị trống) trong ~/.subversion/config.

Để kiểm tra xem sử dụng subversion lưu trữ mật khẩu nào, hãy xem ~/.subversion/auth/svn.simple. Điều này chứa một số tệp, mỗi tệp là một bảng băm với một mã hóa khóa / giá trị đơn giản. Trong svn:realmstringmỗi tệp xác định vùng mà tệp đó dành cho. Nếu tệp có

K 8
passtype
V 6
simple

sau đó nó lưu mật khẩu ở dạng văn bản thuần túy ở đâu đó trong tệp đó, trong một K 8 passwordmục nhập. Khác, nó cố gắng sử dụng một trong những cấu hình password-stores.


1

Tất cả các phương pháp được đề cập ở đây không hoạt động đối với tôi. Tôi đã xây dựng Subversion từ nguồn và tôi phát hiện ra rằng, tôi phải chạy cấu hình với --enable-plaintext-password-storageđể hỗ trợ tính năng này.


1

Chỉ để nhấn mạnh những gì Tomasz Gandor và Domain đã nói về việc có phiên bản svn phù hợp và nó được biên dịch để cho phép lưu trữ mật khẩu văn bản thuần túy, bạn cần xác minh những gì bạn có:

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

Đấu với:

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

The following authentication credential caches are available:

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

Khi bạn thấy rằng phiên bản svn của bạn đã được kích hoạt để lưu trữ mật khẩu văn bản thuần túy, hãy áp dụng tất cả các câu trả lời còn lại tại đây.


1

Tôi đang sử dụng ứng dụng TortoiseSVN trên Windows và đối với tôi, đặt tham số mật khẩu cửa hàng là trong%USERPROFILE%\AppData\Roaming\Subversion\config không giúp ích gì cho việc lưu trữ mật khẩu.

Mật khẩu đã được lưu thành công sau khi xóa thư mục này (chỉ trong trường hợp đổi tên):

%USERPROFILE%\AppData\Roaming\Subversion\auth

Môi trường:

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

0

Thật không may, các câu trả lời không giải quyết được vấn đề yêu cầu mật khẩu cho ssh + svn với khóa riêng được bảo vệ. Sau một số nghiên cứu, tôi thấy:

ssh-add

tiện ích nếu bạn có một máy tính Linux. Đảm bảo rằng bạn đã lưu trữ các khóa của mình /home/username/.ssh/và nhập lệnh này trên Terminal.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.