Ssh-keygen -t rsa'yı otomatikleştirin, böylece bir parola istemez


164

Ben ssh-keygen -t rsaistemi girin yani bir şifre ile otomatikleştirmek gerekir .
Bunu bir kabuk betiğinden nasıl yapabilirim?

Yanıtlar:


230

Parola sorulmadan bir SSH anahtar çifti oluşturmak için aşağıdakileri yapabilirsiniz:

$ ssh-keygen -f id_rsa -t rsa -N ''

2
Benim için çalıştı! Github, "Parolayı girin (parola olmadan boş)"
tanıtımından

4
RHEL 6'da şu hatayı aldım: " ssh-keygen: option requires an argument -- N" :(
Anthony O.

1
Tamam bunun dzdoönünde komut kullandığım için, bu yüzden yazmak zorunda kaldım:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
Anthony O.

1
Seçeneği ve boş parolayı ayıran alanın -N ''önemli olduğu anlaşılıyor . Alanı eklediğimde başarılı oldu!
GH05T

33

Bunu Windows'ta PowerShell'den yapmanız gerekiyorsa:

ssh-keygen -f $Name -t rsa -N '""'

git bin dizininin yolunuzda olduğundan emin olmanız gerekir:

$sshPath = "<path>\git\bin\"

$env:path += ";$sshPath"

Sonra PoshGit içinde kullanmak için sadece:

Add-SshKey "<path>\.shh\KeyFilename"

Bunun için teşekkürler. BTW, git\usr\bindoğru dir.
majkinetor

4
Bu benim için işe yaramıyor. "Kaydetme anahtarı" mykey "başarısız oldu: parola çok kısa (en az dört karakter)" hatası alıyorum. Örneğin, çift / tek tırnak değiştirmek zorunda kaldı ssh-keygen -f $Name -t rsq -N '""'.
Aaron Jensen

1
@AaronJensen benim için aynı. Düzeltme için teşekkürler. Kullandım'""'
Trevor Sullivan

@AaronJensen Teşekkürler! '""'benim için çalışan tek varyant.
Somnium

@ Daniel-Little PoshGit modülünü bulamıyorum, bu isimle bulduğum tek şey bu cmdlet'e sahip olmayan posh-git. Daha fazla bilgi var mı?
Jim

18
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''

Bu cevap esasen Shamoon'un cevabından kopyalayıp yapıştırın
o

@ oᴉɹǝɥɔ Shamoon'un yanıtı özel anahtarın yolunu açıkça belirtmez.
GMaster

11

Sadece cevap 2 için bir düzeltme ... OL ve RHEL sistemimde dosya adının id.rsa değil id_rsa olması gerektiğini öğrendim.

Yani bir OL veya RHEL sisteminde komut şöyle olacaktır:

$ ssh-keygen -f id_rsa -t rsa -N ''

2
Anladığım kadarıyla id_rsabir RSA anahtarı için varsayılan dosya adı olduğundan, varsayılana sadık kalmak istiyorsanız, -fseçeneği açıkça kullanmak zorunda değilsiniz .
danidemi

3
@danidemi doğru olduğunu varsayılan olarak, -fseçeneği belirtmek için bir nedeni , bunu bir komut dosyasında yürütmek olmasıdır. Sonraki istemi devre dışı bırakmak için varsayılanı yeniden doğrulayabilirsiniz.
Tristan Reid

9

Ne dersin :

ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''

Belirtildiği gibi man ssh-keygen:

SYNOPSIS
     ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile]
(...)
      -q      Silence ssh-keygen.

(Bu ile openssh-clientDebian 9.4 streç paket: OpenSSH_6.7p1 Debian-5+deb8u4)


Benim için çalıştı teşekkürler. (OpenSSH_7.6p1 Ubuntu-4ubuntu0.2)
David Webster

0

Bir bash betiğinde ssh-keygen komutunu ve benim için iyi sonuç veren son cevabı otomatikleştirmem gerekiyordu:

echo -e "\n" | ssh-keygen -N "" &> /dev/null

-E ile yapılan echo komutu "\ n" ifadesini Enter tuşu olarak yorumlar, ancak parola ile çalışmaz. Sonra -N "" (boş parola) seçeneğini kullanarak parola boş kalacak ve hiçbir şey istemeyecektir. &> / dev / null, 'stdout' ve 'stderr' öğelerini / dev / null öğesine gönderir, böylece ekran üzerinden hiçbir şey yazdırılmaz.


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.