Làm cho mật khẩu của tôi được bảo vệ bằng khóa SSH hết hạn hoặc hết thời gian sau một thời gian


12

Tôi có khóa SSH riêng tôi sử dụng để xác thực được lưu trữ trong ~ / .ssh / id_rsa . Khi tôi ssh vào một máy chủ, tôi được nhắc nhập mật khẩu để mở khóa:

nhập mô tả hình ảnh ở đây

Tôi thích điều này. Tôi cũng thích rằng tôi có thể ssh nhiều lần và nó không nhắc tôi nhập mật khẩu.

Điều tôi không thích là tôi không bắt buộc phải nhập mật khẩu chính của mình vài ngày hoặc thậm chí vài tuần sau đó. Tôi có thể khóa màn hình hoặc đặt nó vào chế độ ngủ và tôi vẫn không phải nhập mật khẩu chính. Lần duy nhất nó dường như hết hạn mật khẩu là khi tôi đăng xuất (điều mà tôi hiếm khi làm).

Làm thế nào để tôi có được mật khẩu chính hết hạn sau một thời gian, buộc tôi phải nhập lại mật khẩu để xác thực? Làm cho nó có lẽ sau 1 giờ, chìa khóa sẽ tự động bị quên.

Câu trả lời:


4

Thay vì điều chỉnh ssh-agent (hiện yêu cầu số lần hack ngớ ngẩn), tôi thực sự khuyên bạn chỉ nên thay đổi cài đặt trên móc khóa (đăng nhập) mặc định của bạn. Tôi sử dụng 'khóa khi ngủ' rất hữu ích cũng như 'khóa sau 4 giờ' vì tôi không muốn nhắc nhở trừ khi tôi thực sự cảm thấy khó chịu.

Mở Keychain Access và nhấp chuột phải vào móc khóa đăng nhập để thay đổi cài đặt: Cài đặt bảo mật Keychain

Hoặc nếu bạn thích một dòng lệnh:

security set-keychain-settings -lu -t 14400

Điều này sẽ dẫn đến ít nhất một lời nhắc bổ sung để tự mở khóa móc khóa (yêu cầu mật khẩu đăng nhập của bạn) cũng như lời nhắc cho bất kỳ khóa nào bạn đang cố sử dụng ... nhưng nó sẽ vô hiệu hóa IMO Bảo vệ toàn vẹn hệ thống.


Đây không phải là một tùy chọn trong El Capitan đối với tôi và lệnh dòng lệnh dường như không tạo ra bất kỳ sự khác biệt nào, bạn có biết nếu có một tùy chọn tương tự ở El Capitan ở đâu đó không?
Ian

1
Khá chắc chắn rằng tôi đã có thể làm điều này trên El Cap - Tôi vừa mới kiểm tra và cả hai phương thức (UI và cmdline) chắc chắn vẫn hoạt động trên Sierra. Tôi chỉ có thể làm điều đó trên móc khóa đăng nhập, mặc dù, không phải Hệ thống hoặc iCloud.
Dave Gregory

9

Lưu ý : trong các phiên bản OS X mới hơn, bạn phải tắt Bảo vệ toàn vẹn hệ thống để câu trả lời này hoạt động. (Cảm ơn @Dave Gregory và @Jaap đã chỉ ra điều này.)

Mở /System/Library/LaunchAgents/com.openssh.ssh-agent.plist(trong các phiên bản cũ hơn org.openbsd.ssh-agent.plist:) trong trình soạn thảo văn bản. Thay thế:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
</array>

với:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
    <string>-t</string>
    <string>30m</string>
</array>

Điều này sẽ hết hạn sau 30 phút.

Khởi động lại. Chờ đã, khởi động lại?!? Đây không phải là Windows! Vâng, khởi động lại.

Chà, bạn có thể thử giải mã các hướng dẫn để thay đổi cài đặt khi đang bay , nhưng chúc may mắn.


1
Một người bán hàng rong như tôi sẽ thay thế "1800" bằng "30m" vì nó dễ đọc hơn một chút. Xem FORMATS TIME trong sshd_config (8) để biết định dạng đầy đủ.
Tony Williams

@Tony Williams tuyệt! đã sửa
Michael Kropat

Điều này dường như không làm việc cho tôi trên Yosemite; ai khác?
Dave Gregory

Tôi đã tìm thấy một cách giải quyết trên Yosemite không liên quan đến việc vô hiệu hóa Bảo vệ toàn vẹn hệ thống; thêm vào như một câu trả lời dưới đây.
Dave Gregory

1
Cảm ơn thông tin @Jaap. Hiện tại tôi không sử dụng OS-X hàng ngày vì vậy tôi không thể xác minh bất cứ điều gì cá nhân, nhưng để thử và là người quản lý tốt câu hỏi này tôi đã cập nhật câu trả lời của mình dựa trên thông tin của bạn và thay đổi câu trả lời được chấp nhận cho Dave Gregory bởi vì việc vô hiệu hóa Bảo vệ Tính toàn vẹn của Hệ thống dường như không thể thực hiện được trong nhiều trường hợp.
Michael Kropat

7

Bạn cần thiết lập tuổi thọ của chìa khóa. Nó thường mặc định là mãi mãi.

Khi bạn chạy ssh-addbạn muốn sử dụng -ttùy chọn. Nếu bạn muốn một cuộc sống quan trọng của một giờ thì đó là ssh-add -t 1h. Các định dạng thời gian có thể được nhìn thấy trong sshd_configtrang man nhưng chỉ đơn giản là chúng là một số theo sau bởi s, m, h, d hoặc w trong vài giây, phút, giờ, ngày hoặc tuần.

ssh-addcó thể được đưa vào tệp .bashrc của bạn và nó sẽ chỉ yêu cầu bạn xác thực khóa một lần. Ngay cả khi khóa "hết hạn", nó vẫn không bị xóa - nó chỉ yêu cầu nhập lại cụm mật khẩu khi một nỗ lực được thực hiện để sử dụng nó.

Tùy chọn khác sẽ là thay đổi các tùy chọn khởi chạy ssh-agentđược lưu trữ /System/Library/LaunchAgents/org.openbsd.ssh-agent.plistvà thêm vào -tđó. (Tôi sử dụng LaunchControlđể thay đổi những thứ này nhưng bạn có thể làm bằng tay nếu bạn cẩn thận.)


Tôi không cần phải nhớ chạy ssh-addthủ công trước khi chạy sshmỗi lần. Thật thú vị, nhưng tôi thực sự đang tìm kiếm thứ gì đó tự động.
Michael Kropat

+1 cảm ơn đã chỉ cho tôi org.openbsd.ssh-agent.plistgiải pháp
Michael Kropat

1

Một giải pháp khác là:

ssh-add -t <time> <ssh-private-key>  # Set maximum lifetime to your SSH priv key.
killall ssh-agent                    # Kill all ssh-agent processes.
ssh-add -D                           # Delete all identities recorded by the agent.

Với giải pháp này, bạn không phải chọn thời gian chờ cho tất cả móc khóa của mình - khá khó chịu khi bạn muốn đặt thời gian chờ vài giây để ghi mật khẩu khóa riêng - và bạn không phải tắt SIP để chỉnh sửa / Hệ thống / Thư viện / LaunchAgents / org.openbsd.ssh-agent.plist.

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.