Ssh anahtarları oluşturan bash betiği için "enter" tuşlarına otomatik basma


102

Basitçe çalışan bir komut dosyası oluşturmak istiyorum ssh-keygen -t rsa. Ama ona 3 defa nasıl geçilir?

Yanıtlar:


218

Deneyin:

ssh-keygen -t rsa -N "" -f my.key

-N "" boş bir parola kullanmasını söyler (etkileşimli bir komut dosyasındaki girişlerden ikisi ile aynı)

-f my.keyanahtarı içine saklamasını söyler my.key(uygun gördüğünüz şekilde değiştirin).

Her şey, herhangi bir giriş anahtarı sağlamanıza gerek kalmadan çalışır :)

Girişleri etkileşimli bir komut dosyasına göndermek için:

echo -e "\n\n\n" | ssh-keygen -t rsa

4
Bu doğru cevaplayıcı, ancak yine de bir defadan fazla enter tuşuna nasıl basacağımı bilmek istiyorum - başka bir komut dosyasında.
Sławosz

3
Elbette - bir senaryoya yeni satırların nasıl gönderileceğini içerecek şekilde yanıtı güncelledi.
Rudu

2
echo -e "\ n \ n \ n" | sshkeygen -t rsa benim için çalışmıyor, kendiniz deneyebilir misiniz? Sadece ilk girişi geçer. Ancak diğer basit bir betikte işe yarıyor.
Sławosz

1
Göndermeden önce test ettim - iyi çalışıyor, ancak kısa çizgi ssh-keygendüşmüş gibi görünse de - onu tekrar ekledin mi? {düzenlendi} Ayrıca - betiği birden fazla kez çalıştıramazsınız - mevcut _rsaanahtar dosyanın üzerine yazmak istediğinizi onaylamak için soruları değiştirir (yani evet veya n'nin sağlanması gerekir)
Rudu

13
Bunun yes ""yerine echo -e "\n\n\n"( yesherhangi bir bağımsız değişken verilmişse [veya varsayılan olarak "y" yi) çıkarmasını öneririm - bir programın isteyebileceği her şeye "evet" yanıtı vermek istediği durumlar için mükemmeldir. yesdaha kısadır ve her ssh-keygenzaman otomatik olarak cevaplanacak bir soru eklemelidir. :)
zrajm


1

Michel Marro ile biraz daha fazlasına ihtiyaç duyması dışında anlaşın : Dosya zaten mevcutsa, üzerine yazılması gerekip gerekmediğini soran etkileşimli olmaya devam edecektir.

Bu sorunun cevabını kullanın .

yes y | ssh-keygen -q -t rsa -N '' >/dev/null

Null'a yeniden yönlendirme, üzerine yazma mesajını susturmak için gereklidir.


0
echo -e "\n"|ssh-keygen -t rsa -N ""

Eh? Aslında bu, işe yaramadığını iddia ettiğiniz yanıtlardan birinin daha az satır satırına sahiptir (ve bu , her yerde bulunmayan, hiç olmadığı kadar bir echo -eşey yayan platformların alt kümesinde ). -essh-keygen
Charles Duffy

... açık olmak ssh-keygen -N ''gerekirse, otomatik bir kurulum prosedürünün bir parçası olarak üretimden yararlanıyorum ve stdin'i hiç okumuyor, bu yüzden echo( herhangi bir echo varyantın) içine borulanmasına gerek yok . (Kabul edildi, stdin'in /dev/nullüretim kullanım durumumla bağlantılı olduğuna inanıyorum ; bir TTY'ye eklendiğinde farklı davranışlar olabilir, ancak bunun </dev/nullyerine daha iyi cevap echo ... |)
Charles Duffy

1
Benden bir dosya adı istiyor: $ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
Mannix

0

Güvenlik ve performans için ed25519 kullanılması önerilir .

yes "y" | ssh-keygen -o -a 100 -t ed25519 -C "Bla Bla" -f /mypath/bla -N ""

buraya

-o Eski PEM yerine OpenSSH anahtar biçimi (OpenSSH 6.5+ gerekir)

-a DH-GEX adaylarını tararken asallık testi sayısı

-t Anahtar türü (ed25519, RSA, DSA vb.)

-f /mypath/bla Çıktı dosyası yolu ve adı

-N "" Boş parola kullan

ve yes "y"hiçbir etkileşim için.

İki dosya oluşturacak

/mypath/bla
/mypath/bla.pub

nerede bladosya özeldir ve bla.pubherkese açıktır.

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.