Rendere scaduto il timeout o il timeout della mia chiave SSH protetta da password


12

Ho una chiave SSH privata che utilizzo per l'autenticazione memorizzata in ~ / .ssh / id_rsa . Quando entro in un server, mi viene richiesta la password per sbloccare la chiave:

inserisci qui la descrizione dell'immagine

Mi piace questo. Mi piace anche il fatto di poter ssh ancora e ancora e non mi richiede la mia password.

Quello che non mi piace è che non mi viene richiesto di inserire la mia password chiave giorni o anche settimane dopo. Posso bloccare il mio schermo o metterlo in sospensione e non devo ancora inserire la password della mia chiave. L'unica volta che sembra scadere la password è quando esco (cosa che faccio raramente).

Come faccio a far scadere la password chiave dopo un po ', costringendomi a inserire nuovamente la mia password per l'autenticazione? Facendo in modo che forse dopo 1 ora, la chiave venga automaticamente dimenticata.

Risposte:


4

Piuttosto che modificare ssh-agent (che ora richiede quantità stupide di hacking), consiglio vivamente di modificare semplicemente le impostazioni sul portachiavi predefinito (login). Uso l'utilissimo "blocco in sospensione" e "blocco dopo 4 ore" perché non desidero ricevere messaggi a meno che non sia effettivamente afk.

Apri Accesso portachiavi e fai clic con il pulsante destro del mouse sul portachiavi di accesso per modificare le impostazioni: Impostazioni di sicurezza del portachiavi

O se preferisci una riga di comando:

security set-keychain-settings -lu -t 14400

Ciò comporterà almeno un ulteriore prompt per lo sblocco del portachiavi stesso (che richiede la password di accesso) e il prompt per qualsiasi chiave che si sta tentando di utilizzare ... ma batte disabilitando System Integrity Protection IMO.


Questa non è un'opzione in El Capitan per me, e il comando a linea di comando non sembra fare alcuna differenza, sai se c'è un'opzione simile in El Capitan da qualche parte?
Ian,

1
Abbastanza sicuro di essere stato in grado di farlo su El Cap - ho appena controllato ed entrambi i metodi (UI e cmdline) sicuramente funzionano ancora su Sierra. Posso farlo solo sul portachiavi di accesso, tuttavia, non su Sistema o iCloud.
Dave Gregory,

9

Nota : nelle versioni più recenti di OS X è necessario disabilitare la protezione dell'integrità del sistema affinché questa risposta funzioni. (Grazie a @Dave Gregory e @Jaap per averlo segnalato.)

Apri /System/Library/LaunchAgents/com.openssh.ssh-agent.plist(nelle versioni precedenti:) org.openbsd.ssh-agent.plistin un editor di testo. Sostituire:

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

con:

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

Questo scadrà dopo 30 minuti.

Reboot. Aspetta, riavvia?!? Questo non è Windows! Sì, riavvia.

Bene, puoi provare a decifrare le istruzioni per cambiare l'impostazione al volo , ma buona fortuna.


1
Un pedante come me sostituirebbe "1800" con "30m" in quanto rende un po 'più facile la lettura. Vedi FORMATI ORA in sshd_config (8) per il formato completo.
Tony Williams,

@Tony Williams fantastico! risolto
Michael Kropat il

Questo non sembra funzionare per me su Yosemite; chiunque altro?
Dave Gregory,

Ho trovato una soluzione alternativa su Yosemite che non comporta la disabilitazione di System Integrity Protection; aggiunto come risposta di seguito.
Dave Gregory,

1
Grazie per le informazioni @Jaap. Al momento non uso OS-X quotidianamente, quindi non posso verificare nulla personalmente, ma per cercare di essere un buon amministratore di queste domande e risposte ho aggiornato la mia risposta in base alle tue informazioni e ho cambiato la risposta accettata a Dave Gregory perché in molti casi disabilitare la protezione dell'integrità del sistema non è consigliabile.
Michael Kropat,

7

Devi impostare la durata della chiave. Normalmente per impostazione predefinita.

Quando corri ssh-addvuoi usare l' -topzione. Se vuoi una vita chiave di un'ora, allora lo è ssh-add -t 1h. I formati dell'ora possono essere visualizzati nella sshd_configpagina man ma, in poche parole, sono un numero seguito da s, m, h, d o w per secondi, minuti, ore, giorni o settimane.

ssh-addpuò essere inserito nel tuo file .bashrc e ti chiederà solo di convalidare la chiave una volta. Anche quando la chiave "scade" non viene rimossa, ma richiede nuovamente la passphrase quando si tenta di utilizzarla.

L'altra opzione sarebbe quella di modificare le opzioni di avvio per le ssh-agentquali sono archiviate /System/Library/LaunchAgents/org.openbsd.ssh-agent.pliste aggiungere -tlì. (Lo uso LaunchControlper cambiarli, ma puoi farlo a mano se stai attento.)


Preferirei non dover ricordare di correre ssh-addmanualmente prima di correre sshogni volta. È interessante, ma sto davvero cercando qualcosa di automatico.
Michael Kropat,

+1 grazie per avermi indicato la org.openbsd.ssh-agent.plistsoluzione
Michael Kropat,

1

Un'altra soluzione è:

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.

Con questa soluzione, non devi scegliere un timeout per tutto il tuo portachiavi - abbastanza fastidioso quando vuoi impostare un timeout di alcuni secondi per la registrazione della password della tua chiave privata - e non devi disabilitare il tuo SIP per modificare / Sistema / library / LaunchAgents / org.openbsd.ssh-agent.plist.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.