パスワードで保護されたSSHキーを期限切れにするか、しばらくしてからタイムアウトにする


12

〜/ .ssh / id_rsaに保存されている認証に使用するプライベートSSHキーがあります。サーバーにSSH接続すると、キーのロックを解除するためのパスワードの入力を求められます。

ここに画像の説明を入力してください

私はこれが好き。私は何度も何度もsshを実行でき、パスワードの入力を求められないことも気に入っています。

気に入らないのは、キーパスワードを数日または数週間後に入力する必要がないことです。画面をロックしたり、スリープ状態にしたりしても、キーパスワードを入力する必要はありません。パスワードが失効するように見えるのは、ログアウトするときだけです(めったに行いません)。

しばらくしてキーパスワードの有効期限が切れ、認証のためにパスワードの再入力を強制するにはどうすればよいですか?おそらく1時間後に、キーが自動的に忘れられるようにします。

回答:


4

ssh-agentを微調整する(今ではばかばかしいハッキングが必要になります)のではなく、デフォルト(ログイン)キーチェーンの設定を単に変更することを強くお勧めします。私は実際にafkでない限りプロンプトが必要ないので、「4時間後にロックする」だけでなく、非常に役立つ「スリープロック」を使用します。

キーチェーンアクセスを開き、ログインキーチェーンを右クリックして設定を変更します。 キーチェーンのセキュリティ設定

または、コマンドラインを使用する場合:

security set-keychain-settings -lu -t 14400

これにより、キーチェーン自体をロック解除するための少なくとも1つの追加プロンプト(ログインパスワードが必要)と、使用しようとしているキーのプロンプトが表示されます...


これは私にとってはエルキャピタンのオプションではなく、コマンドラインコマンドは何の違いももたらさないようです、エルキャピタンのどこかに同様のオプションがあるかどうか知っていますか?
イアン

1
El Capでこれを行うことができたことはかなり確かです-確認したところ、両方のメソッド(UIとcmdline)は確かにSierraで動作します。ただし、ログインキーチェーンでのみ実行できますが、システムやiCloudでは実行できません。
デイブグレゴリー

9

:OS 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」を「30m」に置き換えると読みやすくなります。完全な形式については、sshd_config(8)の時刻形式を参照してください。
トニーウィリアムズ14年

@Tony Williamsかっこいい!修正
Michael Kropat 14年

これはヨセミテで私のために働いていないようです。他に誰か?
デイブグレゴリー

システム整合性保護を無効にしないヨセミテの回避策を見つけました。以下の回答として追加されました。
デイブグレゴリー

1
@Jaapの情報をありがとう。現在はOS-Xを毎日使用していないので、個人的には何も確認できませんが、このQ&Aをうまく管理するために、情報に基づいて回答を更新し、Dave Gregoryの受け入れられた回答を変更しました多くの場合、システム整合性保護を無効にすることはお勧めできません。
マイケルクロパット

7

キーの寿命を設定する必要があります。通常、デフォルトは永久になります。

実行ssh-addするときは、-tオプションを使用します。あなたが1時間のキーライフが欲しいならそれはそうですssh-add -t 1h。時刻形式はsshd_configmanページで見ることができますが、単に秒、分、時間、日、または週のs、m、h、d、またはwが続く数字です。

ssh-add.bashrcファイルに入れることができ、キーを1回検証するように求められます。キーが「期限切れ」になった場合でも、キーは削除されません。使用しようとすると、パスフレーズが再度要求されます。

他のオプションは、ssh-agent格納されている起動オプションを変更し/System/Library/LaunchAgents/org.openbsd.ssh-agent.plist-tそこに追加することです。(LaunchControlこれらを変更するために使用しますが、注意すれば手で行うことができます。)


毎回ssh-add実行する前に手動で実行することを覚えておく必要はありませんssh。面白いですが、私は本当に自動化されたものを探しています。
マイケルクロパット

org.openbsd.ssh-agent.plist解決策を教えてくれてありがとう+1
Michael Kropat 14年

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.

このソリューションでは、すべてのキーチェーンのタイムアウトを選択する必要はありません-プライベートキーのパスワード記録に数秒のタイムアウトを設定する場合は非常に迷惑です-また、/ System /を編集するためにSIPを無効にする必要はありませんLibrary / LaunchAgents / org.openbsd.ssh-agent.plist。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.