Trước khi bắt đầu, hãy làm rõ một vài điểm:
- macOS sẽ cho phép bạn lưu trữ khóa riêng cụm mật khẩu trong móc khóa macOS.
- ssh-agent (trên macOS hoặc bất kỳ hệ thống nào) giữ giải mã khóa riêng trong trí nhớ .
Sự khác biệt là quan trọng để trả lời câu hỏi của bạn.
- Có vẻ như có hai tùy chọn: ssh-agent hoặc Keychain Access.
Không chính xác. Xem làm rõ ở trên. Nếu bạn sử dụng UseKeychain yes
chỉ thị trong của bạn ~/.ssh/config
, sau đó bất kỳ chương trình kết nối với ssh-agent
ổ cắm sẽ cho phép ssh-agent
để truy cập vào Keychain cho cụm mật khẩu để giải mã khóa riêng của bạn. nếu bạn cũng thế sử dụng AddKeysToAgent yes
Chỉ thị, sau đó khóa được giải mã sẽ được lưu trữ trong tác nhân để sử dụng trong tương lai. Cũng hữu ích để xem một câu hỏi liên quan khác .
... Nếu bạn cần sự tiện lợi của việc lưu trữ tạm thời cụm mật khẩu, tiêu chuẩn là gì?
Có (theo hiểu biết của tôi) không có cách nào để macOS lưu trữ các cụm mật khẩu tạm thời . Tuy nhiên, một giải pháp thỏa mãn một phần cho hiệu quả gần như tương tự có thể có - xem câu trả lời cho câu hỏi 3 dưới đây.
- Làm cách nào tôi có thể xác định và xóa cụm mật khẩu cho khóa riêng mặc định của mình trong Keychain Access? Tôi thấy một khóa riêng chưa được đặt tên, nhưng tôi không muốn xóa nó mà không biết chắc chắn đó là khóa SSH được lưu trữ của mình.
Nếu bạn mở Keychain Access trên máy Mac và tìm kiếm ssh
, bạn có thể sẽ không thấy cụm mật khẩu khóa ssh của mình. Bắt đầu với macOS Sierra (10.12), Apple đã di chuyển móc khóa nào ssh
chìa khóa đã được lưu trữ. Để xem nó, bạn cần chọn "Xem & gt; & gt; Hiển thị các mục vô hình" và sau đó các mục mật khẩu khóa ssh sẽ hiển thị.
Rất có thể là "khóa riêng chưa được đặt tên" mà bạn đang thấy là một số khóa RSA (hoặc DSA) khác.
- Tùy chọn tốt nhất là gì nếu tôi muốn thường xuyên xóa bất kỳ cụm mật khẩu khóa riêng nào? tôi có thể dùng
ssh-add -D
theo một công việc định kỳ.
Trong khi bạn có thể đặt ssh-add -D
vào một công việc định kỳ, và nó có thể sẽ làm một số điều bạn muốn, nó sẽ không loại bỏ cụm mật khẩu từ móc khóa. Nó sẽ chỉ xóa bộ nhớ của chạy ssh-agent
của tất cả giải mã khóa riêng. Nếu bạn có UseKeychain yes
trong cấu hình của bạn, ssh-agent
sẽ vui vẻ giải mã lại khóa lần sau khi cần (xem câu trả lời ở trên cho câu hỏi 1).
Một cách khác để thỏa mãn mong muốn ngụ ý của bạn là không có khóa giải mã mọi lúc là tắt cả hai UseKeychain
và AddKeysToAgent
, như trong:
Host *
UseKeychain no
AddKeysToAgent no
Sau đó, thêm thủ công để chạy ssh-agent
với tuổi thọ hạn chế sử dụng -t <lifetime>
tùy chọn để ssh-add
, như trong:
ssh-add -t 4h ~/.ssh/id_rsa
Điều đó sẽ thêm khóa RSA (mặc định) của bạn vào đại lý với thời gian tồn tại là 4 giờ. Sau bốn giờ, chìa khóa sẽ được gỡ bỏ tự động.
Theo tôi biết, không có chỉ thị nào cho người dùng của bạn ~/.ssh/config
để chỉ định thời gian tồn tại mặc định của bất kỳ khóa nào được thêm vào tác nhân, cũng không có cách nào trong hệ thống sshd_config
. Tuy nhiên, ở đó có thể là một cách để nói với macOS khởi động tác nhân với thời gian tồn tại mặc định bằng cách sử dụng -t <lifetime>
Tùy chọn. Đối với intrepid, tệp plist tác nhân khởi chạy được lưu trữ trong /System/Library/LaunchAgents/com.openssh.ssh-agent.plist
.
Khác cũ hơn, có thể vẫn còn cách tiếp cận khóa họ móc khóa trong khi ngủ.