Yeni bir anahtar oluşturmak zorunda kalmadan SSH anahtarının parolasını nasıl kaldırabilirim?


1033

Dizüstü bilgisayarımda yeni bir SSH anahtarı oluştururken bir parola ayarladım. Ancak, şimdi fark ettiğim gibi, SSH üzerinde bir saatte birçok kez ( Git ve SVN ) uzak bir yere taahhüt etmeye çalıştığınızda bu oldukça acı verici .

Düşünebileceğim bir yol, SSH anahtarlarımı silmek ve yeni oluşturmak. Aynı anahtarları korurken parolayı kaldırmanın bir yolu var mı?


9
Bence kesin cevap aslında Torsten Marek'un yanıtı. Ssh-agent hilesi aradığınız şey olabilir, ancak bu farklı bir sorunun cevabıdır.
tardate

1
Parola yalnızca özel SSH anahtarının kilidini açmak için değil, şifreleme mekanizmasının bir parçasıdır. Bir kısmı SSH anahtarınız, diğeri manuel olarak girilen parola. Yalnızca her iki parça da doğruysa, onlardan oluşturulan bileşik anahtar anında geçerli olacaktır. Yani, diğer parola diğer SSH anahtarına karşılık gelir (ve parola özel bir "diğer parola" özel durumudur).
Paul

97
Bu tür soruları kapatmak, programlama dillerinde yan etkilere izin verilmesi gerekip gerekmediği gibi tartışılmaya benzer. Puristler her zaman amok koşarlar, diğerleri lanetlemez çünkü yararlı bir özelliktir ve hayatı kolaylaştırır. ssh gereklidir, kesinlikle programlama ile ilgili olmasa bile ... bu tür soruları kapatmayın. : |
sjas

Yanıtlar:


1933

Kısa cevap:

$ ssh-keygen -p

Bu daha sonra anahtar dosyası konumunu, eski parolayı ve yeni parolayı (parola içermeyecek şekilde boş bırakılabilir) girmenizi ister.


Tüm bunları komut istemleri olmadan tek bir satırda yapmak istiyorsanız:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

Önemli: Komutları yürütürken, genellikle ~/.bash_historysağlanan tüm argümanlar (yani bu durumda parolalar) dahil olmak üzere dosyanızda (veya benzerlerinde) düz metin olarak kaydedileceklerine dikkat edin . Bu nedenle, aksi takdirde belirli bir nedeniniz olmadıkça ilk seçeneği kullanmanız önerilir.

Yine de , ne -f keyfilebelirtmek zorunda kalmadan kullanabileceğinizi ve anahtar dosyasının varsayılan olarak ayarlandığını , bu nedenle birçok durumda bile gerekli olmadığına dikkat edin.-P-N~/.ssh/id_rsa

Parolayı bir süreliğine önbelleğe alabilen ssh-agent kullanmayı düşünebilirsiniz. Gpg-agent'ın en son sürümleri ssh-agent tarafından kullanılan protokolü de destekler.


464
Açık olmak gerekirse: ssh-keygen -pbir terminalde çalıştırabilirsiniz . Daha sonra sizden bir anahtar dosyası (varsayılan olarak benim için doğru dosyaya ayarlanmıştır ~/.ssh/id_rsa), eski parolayı (şimdi sahip olduklarınızı girin) ve yeni parolayı (hiçbir şey girmeyin) ister.
Henrik N

34
Ör. :ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa
Fedir RYKHTIK

24
Kullanıcının terminalde şifresini yazması ve erişilebilir olması için -1 ~/.bash_history. $ cd ~/.ssh && ssh-keygen -f id_dsa -p
Yazmak

5
Sizler girerseniz kabuk komut bir (beyaz) boşluk başladı dikkat etmelidir komut kaydedilmez için ~/.bash_hstoryIe. `ssh-keygen -p -P oldpassphrase -N" "-f ~ / .ssh / id_rsa` kullanın ve iyi (orada başka bir keyloggerınız yoksa). Ayrıca kayıt geçmişinden kurtulabilirsiniz ..
Büyük

14
Bunun mevcut dosyanın üzerine yazacağını ve yeni bir konum istemeyeceğini söyleyen bir satır eklemeye değebilir.
Lars Francke

46

$ ssh-keygen -p benim için çalıştı

Git bash açıldı. Yapıştırılan:$ ssh-keygen -p

Varsayılan konum için enter tuşuna basın.

Eski parolayı girin

Yeni parola girin - BLANK

Yeni parolayı onayla - BLANK

BOOM git push için parola girme acısı gitti.

Teşekkürler!


Enter $ ssh-keygen -ptuşuna basarsanız ve anahtarınız varsayılan konumda değilse (/Users/yourname/.ssh/id_rsa) deyin, /Users/yourname/.ssh/yourkeyistendiğinde koyarak yanıt verebilirsiniz
Chigozie Orunta

37

Girişte ssh-agent'ı başlatan .bash_profile (veya eşdeğeri) öğenize aşağıdakileri eklemek isteyebilirsiniz.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

Bazı Linux dağıtımlarında (Ubuntu, Debian) şunları kullanabilirsiniz:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

Bu, oluşturulan kimliği uzaktaki bir makineye kopyalar ve uzak anahtarlığa ekler.

Burada ve burada daha fazla bilgi edinebilirsiniz .


7
Modern dağıtım kutunun dışında bir ssh-agent başlatmıyor mu?
Troels Arvin

Bazı Linux dağıtımlarında (Ubuntu, Debian) şunları kullanabilirsiniz: ssh-copy-id -i ~ / .ssh / id_dsa.pub username @ host Elbette bu şekilde erişiminiz var. Ve 2008'den beri olmasına rağmen belki id_rsa.pub'a atıfta bulunmak için düzenlenmelidir (evet bunu düzenleyebilirim ama bunu başkalarının çalışmalarına yapmaktan çekinmiyorum - ve esp böyle bir şey için gidiyor).
Pryftan

@TroelsArvin Evet. Ama otoh'un öldürüldüğü zamanlar var (karşılaştığım durum akla gelmiyor - belki X11'in bir sorunu yoksa ve onu yeniden başlatmanız gerekmiyorsa ... böyle bir örnek olabilir). Bu durumda, onu yeniden oluşturmanız gerekir.
Pryftan

8

Parolayı değiştirmek veya kaldırmak için, genellikle yalnızca pve fbayraklarını geçirmenin en basit yolunu bulurum , ardından sistemin parolaları sağlamamı istemesine izin ver:

ssh-keygen -p -f <name-of-private-key>

Örneğin:

ssh-keygen -p -f id_rsa

Parolayı kaldırmak istiyorsanız boş bir parola girin.

Parolayı kaldırmak veya değiştirmek için örnek bir çalışma şuna benzer:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment 'bcuser@pl1909'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Parolası olmayan bir anahtara parola eklerken, çalışma şöyle görünür:

ssh-keygen -p -f id_rsa
Key has comment 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

3

Windows'da, PuttyGen'i kullanarak özel anahtar dosyasını yükleyebilir, parolayı kaldırabilir ve mevcut özel anahtar dosyasının üzerine yazabilirsiniz.


2

On Mac Eğer şeffaf bunu kullanan Keychain, içinde özel ssh anahtarı için parolayı saklayabilir. Oturum açtıysanız, oturumunuz kapatıldığında root kullanıcınız kullanamaz. Parolayı kaldırmak kötü bir fikirdir çünkü dosyaya sahip herkes onu kullanabilir.

ssh-keygen -K

Bunu şuraya ekle ~/.ssh/config

UseKeychain yes
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.