Зробіть так, щоб через деякий час термін дії мого SSH ключа або термін дії його закінчився


12

У мене є приватний ключ SSH, який я використовую для аутентифікації, який зберігається в ~ / .ssh / id_rsa . Коли я заходжу на сервер, мені буде запропоновано пароль, щоб розблокувати ключ:

введіть тут опис зображення

Мені подобається це. Мені також подобається, що я можу знову і знову сшувати, і це не запрошує мене на пароль.

Що мені не подобається, це те, що мені не потрібно вводити свій ключовий пароль днів або навіть тижнів. Я можу заблокувати екран або увімкнути його, і мені все одно не потрібно вводити свій ключ-пароль. Єдиний час, коли він, мабуть, втрачає термін дії, - це коли я виходжу (що я роблю рідко).

Як мені отримати ключ ключа, який закінчиться через деякий час, змусивши мене знову ввести свій пароль для автентифікації? Зробити це так, що, можливо, через 1 годину ключ автоматично забудеться.

Відповіді:


4

Замість того, щоб налаштувати ssh-агент (який зараз вимагає нерозумної кількості хакерів), я настійно рекомендую просто змінити налаштування за замовчуванням (вхід) брелка. Я використовую дуже корисну функцію "фіксація уві сні", а також "замок через 4 години", тому що я не хочу підказок, якщо я насправді не є афком.

Відкрийте Keychain Access і клацніть правою кнопкою миші брелок для входу, щоб змінити налаштування: Параметри безпеки брелка

Або якщо ви віддаєте перевагу командному рядку:

security set-keychain-settings -lu -t 14400

Це призведе до хоча б однієї додаткової підказки щодо розблокування самого брелка (вимагає вашого пароля для входу), а також запиту для того чи іншого ключа, який ви намагаєтесь використати ..., але це може бути вимкнено відключенням ІМО захисту від цілісності.


Для мене це не варіант в El Capitan, і команда командного рядка, здається, не має ніякого значення, чи знаєте ви, чи є десь подібний варіант в El Capitan?
Ян

1
Досить впевнений, що мені вдалося це зробити на El Cap - я щойно перевірив, і обидва методи (UI та cmdline), безумовно, все ще працюють на Sierra. Я можу це робити лише на брелоку для входу, хоча не System або iCloud.
Дейв Григорій

9

Примітка . У нових версіях ОС X ви повинні відключити захист цілісності системи, щоб ця відповідь спрацювала. (Дякуємо @Dave Gregory та @Jaap, що вказали на це.)

Відкрийте /System/Library/LaunchAgents/com.openssh.ssh-agent.plist(у старих версіях:) org.openbsd.ssh-agent.plistтекстовий редактор. Замінити:

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

з:

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

Термін дії ключа закінчується через 30 хвилин.

Перезавантажте. Зачекайте, перезавантажте?!? Це не Windows! Так, перезавантажте.

Ну, ви можете спробувати розшифрувати інструкції щодо зміни налаштування на льоту , але удачі.


1
Такий педант, як я, замінив би "1800" на "30м", оскільки це полегшує читання. Дивіться ЧАС ФОРМАТИ в sshd_config (8) для повного формату.
Тоні Вільямс

@ Тоні Вільямс класно! виправлено
Михайло Кропат

Це, здається, не працює для мене на Yosemite; будь-хто інший?
Дейв Григорій

Я знайшов вирішення проблеми на Yosemite, яке не передбачає відключення захисту системної цілісності; додано як відповідь нижче.
Дейв Григорій

1
Дякуємо за інформацію @Jaap. В даний час я не використовую OS-X щоденно, тому не можу нічого особисто перевірити, але, щоб спробувати бути хорошим розпорядником цього питання, я оновив свою відповідь на основі вашої інформації та змінив прийнятий відповідь на Дейва Грегорі оскільки відключення захисту цілісності системи в багатьох випадках видається недоцільним.
Михайло Кропат

7

Потрібно встановити термін служби ключа. Зазвичай це за замовчуванням назавжди.

Під час запуску ssh-addпотрібно скористатися -tопцією. Якщо ви хочете ключового життя однієї години, то це так ssh-add -t 1h. Формати часу можна побачити на sshd_configголовній сторінці, але просто кажучи, це число, за яким слідують s, m, h, d або w протягом секунд, хвилин, годин, днів або тижнів.

ssh-addможна помістити у файл .bashrc, і він просто попросить один раз перевірити ключ. Навіть коли ключ "закінчується", він не видаляється - він просто запитує парольну фразу ще раз при спробі його використання.

Іншим варіантом було б змінити параметри запуску, ssh-agentякі зберігаються в, /System/Library/LaunchAgents/org.openbsd.ssh-agent.plistі додати -tтуди. (Я використовую LaunchControlдля зміни цих, але ви можете це зробити вручну, якщо ви обережні.)


Я б краще не пам'ятати, щоб запускати ssh-addвручну, перш ніж sshкожен раз бігати . Це цікаво, але я справді шукаю щось автоматичне.
Михайло Кропат

+1 спасибі за вказівку на org.openbsd.ssh-agent.plistрішення
Михайло Кропат,

1

Іншим рішенням є:

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.

За допомогою цього рішення вам не доведеться вибирати тайм-аут для всієї вашої брелки брелоків - це дуже дратує, коли ви хочете встановити час запису паролем на ваш приватний ключ, який очікує кілька секунд, - і вам не доведеться відключати SIP для редагування / System / Бібліотека / LaunchAgents / org.openbsd.ssh-agent.plist.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.