Parola korumalı SSH anahtarımın bir süre sonra dolmasını veya zaman aşımını yap


12

~ / .Ssh / id_rsa içinde saklanan kimlik doğrulaması için kullandığım özel bir SSH anahtarım var . Bir sunucuya ssh yaptığımda, anahtarın kilidini açmak için parola istenir:

resim açıklamasını buraya girin

Bunu severim. Ayrıca tekrar tekrar ssh yapabilirim ve şifremi istemiyor.

Sevmediğim şey, anahtar şifremi günler hatta haftalar sonra girmem gerekmiyor. Ekranımı kilitleyebilir veya uyku moduna geçirebilirim ve hala anahtar şifremi girmek zorunda değilim. Parolayı sona erdiren tek zaman, oturumu kapattığımda (nadiren yaptığım).

Kimlik doğrulamam için şifremi tekrar girmeye zorlayarak bir süre sonra anahtar şifrenin süresinin dolmasını nasıl sağlayabilirim? Belki 1 saat sonra anahtar otomatik olarak unutulur.

Yanıtlar:


4

Ssh-agent (şimdi aptalca hack miktarları gerektirir) tweaking yerine, sadece varsayılan (login) anahtarlık ayarlarınızı değiştirmenizi şiddetle tavsiye ederim. Ben gerçekten afk sürece istemleri istemiyorum çünkü çok yararlı 'uyku kilidi' yanı sıra '4 saat sonra kilit' kullanın.

Anahtarlık Erişimi'ni açın ve ayarları değiştirmek için giriş anahtarlığına sağ tıklayın: Anahtarlık Güvenlik Ayarları

Veya bir komut satırı tercih ediyorsanız:

security set-keychain-settings -lu -t 14400

Bu, anahtarlığın kilidini açmak için en az bir ekstra komut isteminin yanı sıra (giriş şifrenizi gerektirir) ve hangi anahtarı kullanmaya çalıştığınız için komut istemi ile sonuçlanır ...


Bu El Capitan'da benim için bir seçenek değil ve komut satırı komutu herhangi bir fark yaratmıyor gibi görünüyor, El Capitan'da bir yerde benzer bir seçenek olup olmadığını biliyor musunuz?
Ian

1
Eminim bunu El Cap'da yapabildim - sadece kontrol ettim ve her iki yöntem de (UI ve cmdline) kesinlikle Sierra'da çalışıyor. Sistem veya iCloud'da değil, sadece giriş anahtarlığında yapabilirim.
Dave Gregory

9

Not : OS X'in daha yeni sürümlerinde, bu yanıtın çalışması için Sistem Bütünlüğü Korumasını devre dışı bırakmanız gerekir . (Bunu işaret ettikleri için @Dave Gregory ve @Jaap'a teşekkürler.)

Bir metin düzenleyicisinde açın /System/Library/LaunchAgents/com.openssh.ssh-agent.plist(eski sürümlerde org.openbsd.ssh-agent.plist:). Değiştir:

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

ile:

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

Bu işlemin süresi 30 dakika sonra dolar.

Yeniden Başlatma. Bekle, yeniden başlat?!? Bu Windows değil! Evet, yeniden başlat.

Peki, ayarı anında değiştirmek için talimatları çözmeyi deneyebilirsiniz , ancak iyi şanslar.


1
Benim gibi bir bilgiç, okumayı biraz daha kolaylaştırdığı için "1800" ü "30m" ile değiştirirdi. Tam biçim için bkz. Sshd_config (8) içindeki TIME FORMATS.
Tony Williams

@Tony Williams harika! sabit
Michael Kropat

Bu benim için Yosemite üzerinde çalışmıyor gibi görünüyor; başka biri var mı?
Dave Gregory

Yosemite üzerinde Sistem Bütünlüğü Korumasını devre dışı bırakmayı gerektirmeyen bir çözüm buldum; aşağıda bir cevap olarak eklendi.
Dave Gregory

1
@Jaap bilgi için teşekkürler. Şu anda OS-X'i günlük olarak kullanmıyorum, bu yüzden kişisel olarak hiçbir şeyi doğrulayamıyorum, ancak bu soru ve cevapların iyi bir temsilcisi olmak için cevabınızı bilgilerinize dayanarak güncelledim ve kabul edilen cevabı Dave Gregory'nin çünkü Sistem Bütünlüğü Korumasını devre dışı bırakmak pek çok durumda tavsiye edilemez gibi görünüyor.
Michael Kropat

7

Anahtarın ömrünü ayarlamanız gerekir. Normalde sonsuza dek varsayılan olur.

Çalıştırdığınızda seçeneği ssh-addkullanmak istersiniz -t. Bir saatlik bir anahtar yaşam istiyorsanız o zaman ssh-add -t 1h. Zaman biçimleri sshd_configkılavuz sayfasında görülebilir, ancak basitçe bir sayı, ardından s, m, h, d veya w ile saniyeler, dakikalar, saatler, günler veya haftalardır.

ssh-add.bashrc dosyanıza konabilir ve sadece anahtarı bir kez doğrulamanızı ister. "Geçerlilik süresi sona erdiğinde" anahtar kaldırılmasa bile, yalnızca anahtar sözcük kullanılmaya çalışıldığında yeniden parola ister.

Diğer seçenek, ssh-agentiçinde depolanan başlatma seçeneklerini değiştirmek /System/Library/LaunchAgents/org.openbsd.ssh-agent.plistve -toraya eklemek olacaktır . (Bunları LaunchControldeğiştirmek için kullanıyorum ama dikkatli olursanız elle yapabilirsiniz.)


Her seferinde ssh-addkoşmadan önce manuel olarak çalıştırmayı hatırlamak istemem ssh. İlginç, ama gerçekten otomatik bir şey arıyorum.
Michael Kropat

Beni org.openbsd.ssh-agent.plistçözüme yönlendirdiğiniz için +1 teşekkürler
Michael Kropat

1

Başka bir çözüm:

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.

Bu çözümle, tüm anahtarlığınız için bir zaman aşımı süresi seçmek zorunda kalmazsınız - özel anahtar parola kaydınıza birkaç saniyelik bir zaman aşımı ayarlamak istediğinizde oldukça can sıkıcı - ve SIP'inizi düzenlemek için devre dışı bırakmanız gerekmez / Sistem / Kütüphane / LaunchAgents / org.openbsd.ssh-agent.plist.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.