Mengotomatiskan penekanan tombol "enter" untuk skrip bash yang menghasilkan kunci ssh

101

Saya ingin membuat skrip, yang berjalan begitu saja ssh-keygen -t rsa. Tapi bagaimana cara melewatinya 3 kali masuk?

Sławosz
sumber

Jawaban:

217

Mencoba:

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

-N "" memberi tahu untuk menggunakan frasa sandi kosong (sama dengan dua entri dalam skrip interaktif)

-f my.keymemberitahu itu untuk menyimpan kunci ke my.key(ubah sesuai keinginan Anda).

Semuanya berjalan tanpa Anda perlu menyediakan tombol enter apa pun :)

Untuk mengirim entri ke skrip interaktif:

echo -e "\n\n\n" | ssh-keygen -t rsa
Rudu
sumber
4
Ini jawaban yang benar, tetapi saya masih ingin tahu cara menekan enter lebih dari satu kali - di skrip lain.
Sławosz
3
Tentu - memperbarui jawaban untuk memasukkan cara mengirim baris baru ke skrip.
Rudu
2
echo -e "\ n \ n \ n" | sshkeygen -t rsa tidak berfungsi untuk saya, dapatkah Anda mencobanya sendiri? Ini lulus hanya masuk pertama. Tetapi di sisi lain, skrip sederhana berfungsi.
Sławosz
1
Saya mengujinya sebelum saya mempostingnya - berfungsi dengan baik, meskipun sepertinya dasbor dari ssh-keygenterjatuh - apakah Anda menambahkannya kembali? {edited} Juga - Anda tidak dapat menjalankan skrip lebih dari sekali - ini mengubah pertanyaan untuk mengonfirmasi bahwa Anda ingin menimpa _rsakeyfile yang ada (jadi ay atau n perlu disediakan)
Rudu
13
Saya akan merekomendasikan menggunakan yes ""alih-alih echo -e "\n\n\n"( yesmengeluarkan argumen apa pun yang diberikan [atau "y" secara default] dalam tak terhingga - sempurna untuk situasi ini di mana seseorang hanya ingin memberikan jawaban "ya" untuk apa pun yang mungkin diminta oleh program). yeslebih pendek, dan harus ssh-keygenmenambahkan pertanyaan, yang akan otomatis dijawab juga. :)
zrajm
22

versi dengan frasa sandi adalah:

$ ssh-keygen -t rsa -b 4096 -C "comment" -P "examplePassphrase" -f "desired pathAndName" -q 
  • -q untuk diam

Sumbernya adalah http://linux.die.net/man/1/ssh-keygen

Michel Marro
sumber
4
Gunakan -P untuk frasa sandi yang ada, gunakan -N untuk yang baru
brianlmerritt
1

Setuju dengan Michel Marro kecuali bahwa ia membutuhkan lebih banyak lagi: Jika file sudah ada, ia akan tetap interaktif menanyakan apakah ia harus menimpanya.

Gunakan jawaban dari pertanyaan ini .

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

Pengalihan ke null diperlukan untuk menonaktifkan pesan yang ditimpa.

shamox
sumber
0
echo -e "\n"|ssh-keygen -t rsa -N ""
Mannix
sumber
Eh? Ini sebenarnya memiliki lebih sedikit baris baru daripada salah satu jawaban yang Anda klaim tidak berfungsi (dan itu adalah bagian dari platform di mana echo -ememancarkan sesuatu selain -esama sekali, yang tidak ssh-keygentersedia di semua tempat).
Charles Duffy
... agar jelas, saya menggunakan produksi ssh-keygen -N ''sebagai bagian dari prosedur penginstalan otomatis, dan tidak membaca stdin sama sekali, jadi tidak perlu echo( varian apa pun echo ) yang disalurkan ke dalamnya. (Memang, saya percaya stdin terhubung ke /dev/nulldalam kasus penggunaan produksi saya; mungkin ada perilaku yang berbeda ketika dipasang ke TTY, tetapi jawaban yang lebih baik </dev/nulldaripada echo ... |)
Charles Duffy
1
Ini mendorong saya untuk nama file: $ 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

Dianjurkan untuk menggunakan ed25519 untuk keamanan dan kinerja.

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

sini

-o Format kunci OpenSSH, bukan PEM yang lebih lama (perlu OpenSSH 6.5+)

-a Jumlah tes primality saat menyaring kandidat DH-GEX

-t Jenis kunci (ed25519, RSA, DSA dll.)

-f /mypath/bla Jalur dan nama file keluaran

-N "" Gunakan frasa sandi kosong

dan yes "y"tanpa interaksi.

Ini akan menghasilkan dua file

/mypath/bla
/mypath/bla.pub

di mana blafile tersebut bersifat pribadi dan bla.pubpublik.

Madan Sapkota
sumber