Cách tốt nhất để lưu trữ mật khẩu svn được mã hóa trên Ubuntu Server là gì?


8

Tiếng ồn

Tôi có Ubuntu Server đang chạy một máy chủ lật đổ. Tôi đang chạy ứng dụng khách trên cùng một máy thông qua SSH và tôi muốn khách hàng svn nhớ mật khẩu của mình, nhưng không lưu trữ dưới dạng bản rõ. Nhìn vào đây tôi thấy hai phương pháp: gnome-keyring và kwallet. Vì tôi không sử dụng trình quản lý máy tính để bàn nên tôi hơi cảnh giác về việc thử sử dụng một trong những thứ này. Bất kỳ đề xuất? Có thể sử dụng một trong hai ứng dụng mà tôi đã đề cập không?

TIA

Câu trả lời:


9
  1. Bạn có thể chạy Gnome-keyring hoặc Kwallet trên máy từ xa. Mỗi thành phần có hai thành phần, daemon và GUI.

    • Bạn có thể chạy ứng dụng GUI trên máy từ xa nếu bạn chạy ssh với chuyển tiếp X. Chỉ vì đó là một máy chủ của máy tính, máy tính không có nghĩa là bạn không thể cài đặt các ứng dụng GUI trên đó. Không quan trọng bạn có chạy môi trường máy tính để bàn tương ứng hay không, các ứng dụng không cần môi trường máy tính để bàn cụ thể để chạy.

    • Bạn có thể điều khiển Kwallet trên dòng lệnh thông qua qdbus, mặc dù đó không phải là ý kiến ​​hay trong trường hợp cụ thể này vì bạn phải viết mật khẩu bằng văn bản rõ ràng trên một dòng lệnh và điều này có thể bị người dùng khác rình mò. Xem thêm câu trả lời SU này .

    • Có một ràng buộc trăn cho cả Gnome-keyring và Kwallet (gói python-keyring-gnomepython-keyring-kwallet); bạn có thể viết một kịch bản python nhỏ để kiểm soát chúng. Trong thực tế, đã có một cho Gnome-keyring: gkeyring .

    • Nếu mật khẩu khóa của bạn giống với mật khẩu đăng nhập, bạn có thể cài đặt libpam-keyringvà khóa của bạn sẽ tự động được mở khóa khi bạn đăng nhập. Tuy nhiên, điều này đòi hỏi phải đăng nhập bằng mật khẩu thay vì cặp mật khẩu.

  2. Nếu bạn đang chạy Gnome-keyring hoặc Kwallet cục bộ, bạn có thể chuyển tiếp chúng qua ssh, với một chút công việc. Họ sử dụng ổ cắm Unix, mà ssh không thể chuyển tiếp. Nhưng bạn có thể sử dụng socatchuyển tiếp các ổ cắm Unix sang ổ cắm TCP cục bộ và ngược lại trên máy từ xa:

    while true; do socat TCP-LISTEN:22007 UNIX-CONNECT:"$GNOME_KEYRING_SOCKET"; done &
    ssh -R22007:localhost:22007 remote.example.com
    export GNOME_KEYRING_SOCKET="$HOME/.gnome-keyring-socket"
    while true; do socat UNIX-LISTEN:"$GNOME_KEYRING_SOCKET" TCP4:localhost:22007; done &
    

    Điều này có thể được tự động với các tập lệnh shell nhỏ ở mỗi bên và một RemoteForwarddòng trong ~/.ssh/config. Về lý thuyết, sau đó bạn sẽ có thể truy cập khóa gnome từ máy từ xa. Tuy nhiên, tôi đã cố gắng truy cập nó bằng cá ngựa và thậm chí nó còn không thử kết nối với $GNOME_KEYRING_SOCKET; Tôi không biết tại sao và tôi không biết liệu svn có thể truy cập khóa hay không.

  3. Bạn có thể lưu trữ mật khẩu svn của mình trên một hệ thống tập tin được mã hóa. Có một số lựa chọn ; Tôi nghĩ rằng cách đơn giản nhất để có được đi là encfs. Thiết lập ban đầu:

    sudo aptitude install encfs
    encfs ~/.passwords.encrypted ~/.passwords
    mv ~/.subversion/auth ~/.passwords/svn-auth
    ln -s ../.passwords/svn-auth ~/.subversion/auth
    

    Quy trình làm việc bình thường:

    encfs ~/.passwords.encrypted ~/.passwords
    ... work ...
    fusermount -u ~/.passwords
    

    Phương pháp này có sở thích của tôi vì một số lý do:

    • Cả thiết lập ban đầu và quy trình làm việc bình thường đều rất đơn giản.
    • Không quan trọng bạn đăng nhập từ đâu, đặc biệt là bạn không cần có máy chủ X cục bộ và sử dụng chuyển tiếp X qua ssh.
    • Một hệ thống tập tin được mã hóa linh hoạt hơn so với khóa (mặc dù nó không thuận tiện cho việc sử dụng khóa, nhưng trong trường hợp svn không thành vấn đề).
    • Công cụ không phổ biến duy nhất bạn cần là encfs (yêu cầu FUSE) và nó được đóng gói cho Ubuntu.

Nhiều hơn tôi có thể hy vọng trong một câu trả lời, cảm ơn! Tôi sẽ thử cách tiếp cận thứ 3 và báo cáo lại.
Andy

Câu trả lời rất đầy đủ.
this.josh

Có thể thực hiện lật đổ bảo lãnh nếu ~ / .subversion / auth trống / không tồn tại? Nếu không, cách tiếp cận thứ 3 là một chút nguy hiểm nếu bạn quên chạy encfs trước.
unhammer

@unhammer Với cách tiếp cận này, nếu hệ thống tập tin encfs không được gắn kết, thì đó ~/.subversion/authlà một liên kết tượng trưng lơ lửng. Trong trường hợp đó, lật đổ cho bạn biết rằng nó sẽ lưu mật khẩu của bạn (nếu bạn chưa tắt thông báo đó) nhưng thực tế không lưu trữ nó ở bất cứ đâu (được thử nghiệm với svn 1.6.6). Vì vậy, không có rủi ro với cách tiếp cận thứ ba.
Gilles 'SO- ngừng trở nên xấu xa'

aha, lần đầu tiên tôi đã thử mà không có symlink, nhưng bây giờ tôi thấy một symlink đến một thư mục bên trong thư mục được mã hóa hoạt động, cảm ơn bạn đã xóa nó đi :-)
unhammer

0

gpg mã hóa một tệp có mật khẩu, nhưng sau đó bạn sẽ cần một cụm mật khẩu cho điều đó (và không bị mất khóa riêng!).

Tôi đoán bạn có thể kiểm tra svn khóa riêng cũng như bạn vẫn cần cụm mật khẩu để sử dụng nó, nhưng toàn bộ thiết lập này có vẻ hơi kỳ quặc.

tại sao bạn cần phải làm điều này?


Tôi không tìm kiếm một cách mục đích chung để mã hóa, mà là một cách kết hợp tốt với SVN. Khi tôi sử dụng SVN trên Ubuntu dekstop, không có vấn đề gì, vì vậy tôi cho rằng nó đang sử dụng khóa gnome. Tôi đoán một lần nữa rằng gnome-keyring không được cài đặt trên máy chủ Ubuntu và đó là lý do tại sao có vấn đề. Hiện tại tôi có thể kiểm tra nội dung, nhưng tôi nhận được cảnh báo rằng tôi chỉ có thể lưu trữ mật khẩu không được mã hóa. Xem liên kết tôi đã cho biết thêm chi tiết. Cảm ơn.
Andy

Tôi đã làm rõ lời giải thích ở trên, hth.
Andy

Tôi rất thích sử dụng ~ / .authinfo.gpg với định dạng netrc tiêu chuẩn cho SVN và có gpg xử lý mã hóa, nhưng thật không may, có vẻ như nó yêu cầu thiết lập nhiều hơn một chút so với giải pháp encfs. Dường như svn không cho phép lưu trữ mật khẩu do người dùng xác định tùy ý.
unhammer
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.