Làm cách nào tôi có thể lấy GPG Agent để lưu mật khẩu?


21

Tôi là nhà phát triển và tôi thường ký cam kết Git của mình bằng khóa GPG. Tôi đã có thể khiến GPG Agent hoạt động chính xác trên OSX để nó chỉ hỏi tôi mật khẩu một lần mỗi ngày, nhưng tôi gặp vấn đề khi sử dụng cùng một thứ trên Ubuntu 16.04.

Đây là những gì tôi đang làm:

  • Tôi đã thiết lập khóa GPG / v.v.
  • Tôi đang ở trong một thư mục Git.
  • Tôi thêm một số tập tin vào Git.
  • Sau đó tôi đi đến cam kết chúng ( git commit) và nhận được yêu cầu mật khẩu GPG giống như thế này:

    $ git ci
    
    You need a passphrase to unlock the secret key for
    user: "Randall Degges <r@rdegges.com>"
    4096-bit RSA key, ID 8F700DA2, created 2016-04-05
    
    [master 1740961] blah
     1 file changed, 1 insertion(+)
    

Vấn đề là: mỗi lần tôi thực hiện một cam kết, tôi lại được nhắc nhập lại mật khẩu GPG của mình.

Những gì tôi muốn làm là cấu hình GPG Agent để lưu mật khẩu của tôi trong 1 ngày, do đó chỉ cần nhập một lần.

Tôi đã đọc qua hàng tấn tài liệu và bài đăng trên blog, và đây là những gì tôi đã thử cho đến nay ...

Đầu tiên, tôi đã sửa đổi ~/.zshrctệp của mình (tôi sử dụng zsh) để đặt như sau:

# GPG Agent
export GPG_TTY=$(tty)
export GPGKEY=8F700DA2

Bây giờ, từ những gì tôi đọc được, điều này một mình nên thực hiện thủ thuật sau khi khởi động lại gpg-agent, nhưng không được.

Vì vậy, điều tiếp theo tôi làm là tôi đã xác định một ~/.gnupg/gpg-agent.conftệp như được giải thích trong man gpg-agenttrang:

# Set the default cache time to 1 day.
default-cache-ttl       86400
default-cache-ttl-ssh   86400

# Set the max cache time to 30 days.
max-cache-ttl           2592000
max-cache-ttl-ssh       2592000

Điều này cũng không có tác dụng.

Tôi cũng đã thử các phương pháp blog khác nhau, v.v., nhưng dường như không có gì hoạt động. Ai đó có thể cho tôi một số gợi ý cho những thứ tôi có thể đang thiếu?

Câu trả lời:


24

Ngoài việc thiết lập thời gian lưu trữ trong bộ đệm gpg-agent.conf, bạn cũng phải đảm bảo GnuPG thực sự đang can thiệp vào gpg-agent. Nói chung, GnuPG 2 trở lên thì có, nhưng nhánh GnuPG 1 thì không. Theo mặc định, git đang sử dụng gpgtệp nhị phân, (tại thời điểm viết câu trả lời này) vẫn là GnuPG 1, trong khi GnuPG 2 được cài đặt như gpg2trên hầu hết các hệ thống.

Cuối cùng, bạn có hai khả năng:

  • thiết lập git để sử dụnggpg2 bằng cách thay đổi cấu hình git:

    git config --global gpg.program gpg2
    
  • thiết lập gpg(GnuPG 1) để sử dụng gpg-agentbằng cách thêm use-agentvàogpg.conf

0

Ngoài câu trả lời trên, bạn cũng có thể thay đổi mặc định gpgtrong hệ thống của mình thành gpg2thay vì gpg1.

Nếu git config --global gpg.program gpg2làm việc cho bạn, nhưng bạn không muốn để nó trong cấu hình git của mình (trong trường hợp của tôi vì tôi sử dụng cùng một cấu hình trên macOS) thì bạn chỉ có thể trao đổi mặc định gpg.

Tôi đã làm theo hướng dẫn ở đây , đó là:

$ sudo mv /usr/bin/gpg /usr/bin/gpg1
$ sudo update-alternatives --verbose --install /usr/bin/gpg gnupg /usr/bin/gpg2 50

Điều này làm cho nhị phân gpg1gpgvà liên kết tượng trưng /usr/bin/gpg -> /usr/bin/gpg2(với tên gnupg và mức độ ưu tiên 50).

Về mặt gpglý thuyết, việc thay đổi mặc định có thể phá vỡ một số gói trên hệ thống của bạn, nhưng Debian Stretch (phiên bản ổn định hiện tại của Debian) đặt gpg2làm mặc địnhgpg theo cách tương tự, do đó bạn không nên gặp quá nhiều vấn đề.

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.