Có một số cuộc thảo luận ngắn gọn về ssh-agent -t
tính năng hiện có tại [1], và đã có một bài đăng từ năm 2001 về debian-devel [2] mong muốn tính năng hết thời gian không hoạt động. Có một cuộc thảo luận tương tự ở đây về SE [3] cho cuộc thi.
Tôi phải tự hỏi làm thế nào phần còn lại của hành tinh đang bảo vệ các khóa ssh - tôi có thiếu điều gì rõ ràng để điều này trở thành một điểm đau đối với tôi không, và rõ ràng không ai khác? Cụ thể tôi đang nghĩ về các tương tác ssh theo kịch bản, chẳng hạn như với ansible. Dường như ngày nay, sự lựa chọn của bạn là:
- Đặt thời gian tồn tại của khóa trong tác nhân thành một khoảng thời gian dài đáng lo ngại, vd. 1h hoặc bất cứ mức tối đa thời gian của kịch bản của bạn chạy có thể xảy ra được (tôi nghi ngờ nhiều người cho phép thời gian chờ sudo Tái uỷ quyền của họ để căng lâu!) - nhưng
seahorse
/gnome-keyring-daemon
hiếm khi thậm chí hỗ trợ nhiều này [4] - Giữ bí mật các tập lệnh chạy dài của bạn và tiếp tục nhập lại cụm mật khẩu của bạn cứ sau 5/10/15 phút: bây giờ bạn có thể dễ dàng theo dõi nhập cụm mật khẩu của mình 20 lần một ngày
- Hack giải pháp tự pha chế tại nhà của bạn để bắt chước tính năng còn thiếu này, có thể kết hợp với
TMOUT
var shell shell của bạn (cảm ơn mọi người trên freenode #openssh IRC cho đề xuất đó) - Hoàn toàn không có thời gian khóa được đặt, tức là đại lý của bạn sẽ giữ khóa của bạn được tải mãi mãi hoặc cho đến khi bạn giết / khởi động lại
Nếu bạn đang sử dụng thời gian chờ đại lý ssh ngắn, cụm mật khẩu mạnh và các tệp khóa khác nhau cho từng loại vai trò mà bạn xác thực là: điều này dẫn đến một ngày rất bực bội!
Tôi đã thử nghiệm với gpgkey2ssh và thẻ thông minh, nhưng điều này không thực sự giải quyết được vấn đề cụ thể này: Tôi vẫn muốn chức năng ssh-agent và tôi không muốn phải xác thực lại sau mỗi 5 phút chỉ để ngăn các khóa riêng tư của mình bị lộ trong bộ nhớ trong khi máy tính của tôi không hoạt động.
Tôi đang làm sai à?
[1] Định cấu hình thời gian chờ mặc định cho tác nhân SSH
[2] https://lists.debian.org/debian-devel/2001/09/msg00851.html
[3] /server/518312/putty-pageant-forget-keys-after-apse-of-inactivity
[4] https://bugs.launchpad.net/ubfox/+source/gnome-keyring/+orms/129231
ssh-agent
khi nào một phiên không hoạt động, nhưng ít nhất là bắt đầu thời gian chờ từ bất cứ khi nào hoạt động ký cuối cùng xảy ra, không chỉ bất cứ khi nào ssh-agent
được khởi chạy. Ngoài ra, tôi đã sử dụng các tài khoản người dùng và keyfiles riêng biệt cho từng vai trò tập lệnh, sudoers chỉ cho phép 1 hoặc 2 lệnh được sudo'd nếu cần và tôi đã xem xét lshell
để khóa mọi thứ hơn nữa. Nhưng tất cả những điều đó vẫn không khiến tôi không cần phải bảo vệ các keyfiles của mình: chỉ vì đây sudo zfs send
là lệnh duy nhất được phép cho một khóa nhất định, đó là một lệnh khá mạnh mẽ cho bất kỳ ai sử dụng khóa đó!
ControlMaster
/ ControlPath
/ ControlPersist
tùy chọn (xem man ssh_config
) cho tập lệnh của bạn. Ít nhất nếu nó chỉ kết nối với một máy chủ.
ssh-agent
giữ khóa của mình được tải cho đến khi tôi khởi động lại (có thể là vài tuần).
ssh-agent
không biết đến loại phiên mà nó là một phần của (ví dụ: phiên tty, phiên X11 hoặc một cái gì khác). Một điều tôi muốn nói nếu các tập lệnh tự động của bạn có lẽ không nên phụ thuộc vào khóa được tải trong đại lý của bạn. Mỗi người có lẽ nên có khóa riêng của họ, được ủy quyền thông qua các lệnh bắt buộc trên các máy chủ phù hợp để chỉ chạy các lệnh từ xa cụ thể mà mỗi tập lệnh cần chạy. Điều đó tất nhiên sẽ cho phép bạn chạy những thứ đó từ cron, v.v ...