Làm cách nào để sử dụng gpg-agent như với ssh-agent + ssh-add?


15

ssh-agentRất dễ sử dụng, tôi khởi động nó và thêm khóa bằng cách sử dụng ssh-add keyfile. Sau khi giết quá trình ssh-agent, tất cả các tập tin đã biến mất.

Làm thế nào tôi có thể có hành vi tương tự với gpg-agent? Chương trình gần nhất tôi tìm thấy là gpg-preset-passphrase. Nhưng nhìn vào trang hướng dẫngpg-agent , có vẻ như một thư mục được tạo để lưu trữ khóa riêng.

Tôi có thể sai, vì vậy tôi tự hỏi làm thế nào tôi có thể thiết lập gpg-agenttheo cách mà không có tệp / thư mục nào được tạo? Nếu không thể, các đề xuất khác để thực hiện gpg-agentcông việc như ssh-agent+ ssh-addcũng sẽ được hoan nghênh. Tôi không tìm kiếm các giải pháp GUI như Seahorse.


bạn đã kiểm tra gpg-connect-agentchưa
Smithamax

@Smithamax không, nhưng dường như sử dụng chức năng tương tự từ gpg-preset-passphrase. Tôi đã chạy gpg-connect-agent, lấy shell và thực hiện setkey IDOFMYPRIVATEKEYHEREtheo sau preset_passphrasevà id dẫn đến "ERR 67108924 Không được hỗ trợ <GPG-agent> - không --allow-preset-mật khẩu"
Lekensteyn

Câu trả lời:


13

Tôi quyết định xem xét lại điều này một lần nữa và tìm ra cách nó hoạt động. GPG sử dụng thuật ngữ "bộ đệm" để lưu trữ mật khẩu. Hai ràng buộc có thể được áp đặt cho thời gian lưu trữ tối đa:

  • Thời gian để giữ cụm mật khẩu kể từ khi khóa ban đầu được thêm vào.
  • Thời gian để giữ một cụm mật khẩu kể từ lần truy cập cuối cùng.

Ngoài ra, có hai biến thể tồn tại cho cả hai ràng buộc, một cho khóa GPG và một cho khóa SSH (nếu hỗ trợ được bật).

Các mục hướng dẫn sử dụng có liên quan từ gpg-agent(1):

   --default-cache-ttl n
          Set  the  time a cache entry is valid to n seconds.  The default
          is 600 seconds.

   --default-cache-ttl-ssh n
          Set the time a cache entry used for SSH keys is valid to n  sec‐
          onds.  The default is 1800 seconds.

   --max-cache-ttl n
          Set the maximum time a cache entry is valid to n seconds.  After
          this time a cache entry will be expired  even  if  it  has  been
          accessed recently.  The default is 2 hours (7200 seconds).

   --max-cache-ttl-ssh n
          Set the maximum time a cache entry used for SSH keys is valid to
          n seconds.  After this time a cache entry will be  expired  even
          if  it has been accessed recently.  The default is 2 hours (7200
          seconds).

Cụm mật khẩu luôn được lưu trong bộ nhớ cache (trong bộ nhớ, không phải trên đĩa! Được xác minh bằng repo git của $HOME), do đó không có nhu cầu rõ ràng cho ssh-add. Ví dụ: ký dữ liệu giả sẽ kích hoạt bộ đệm:

$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)

Để thực hiện thay đổi vĩnh viễn cho cài đặt bộ đệm của gpg-agent, hãy chỉnh sửa ~ / .gnupg / gpg-agent.conf` và thêm một cái gì đó như:

default-cache-ttl  60     # Expire GPG keys when unused for 1 minute
max-cache-ttl     600     # Expire GPG keys after 10 minutes since addition

Tôi đã cố gắng kích hoạt hỗ trợ đại lý SSH bằng cách chỉ định enable-ssh-support, nhưng điều này làm cho tác nhân gpg yêu cầu bạn lấy một khóa khác để mã hóa khóa và sau đó lưu khóa riêng của bạn vào ~/.gnupg/private-keys.d/. Không đi cho tôi, tôi sẽ theo cách tiếp cận ssh-agent / gpg-agent kép sau đó.

Một số mẹo thưởng:

  • Tương đương với tác nhân SSH max-cache-ttl-sshcó thể được chỉ định khi thêm khóa, ví dụ:ssh-add -t 600 ~/.ssh/id_rsa
  • Để ngăn lưu trữ cụm mật khẩu GPG trong tác nhân, hãy vô hiệu hóa tác nhân. Trong các phiên bản GPG mới hơn, tùy chọn --no-use-agentbị bỏ qua, nhưng bạn có thể ngăn tác nhân được sử dụng bằng cách xóa biến môi trường liên quan. Một số cách để làm như vậy:

    echo | GPG_AGENT_INFO= gpg -s         # temporary
    export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
    

máy của tôi liên tục yêu cầu cụm mật khẩu lặp đi lặp lại
đừng sáng

@donbright Bạn có chắc chắn rằng chỉ có một gpg-agenthoạt động không? (Kiểm tra danh sách quá trình, ví dụ với ps u -C gpg-agent). Là thời gian chờ bộ đệm được thiết lập phù hợp? Nếu bạn sử dụng nó để ký (trái ngược với xác thực (SSH)), ignore-cache-for-signingtùy chọn này có được bỏ chọn không?
Lekensteyn

cảm ơn. Vấn đề của tôi hóa ra là tôi đã sử dụng gpg 1.4 thay vì gpg 2, trên Ubuntu có thể gây nhầm lẫn với những gói bạn phải cài đặt.
don sáng
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.