Tự động nhấn phím "enter" để tạo tập lệnh bash tạo khóa ssh


101

Tôi muốn tạo tập lệnh, chỉ đơn giản là chạy ssh-keygen -t rsa. Nhưng làm thế nào để vượt qua nó 3 lần nhập?

Câu trả lời:


217

Thử:

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

-N "" yêu cầu nó sử dụng một cụm mật khẩu trống (giống như hai trong số các lần nhập trong một tập lệnh tương tác)

-f my.keyyêu cầu nó cất chìa khóa vào my.key(thay đổi khi bạn thấy phù hợp).

Toàn bộ hoạt động mà bạn không cần phải cung cấp bất kỳ phím nhập nào :)

Để gửi các lần nhập vào một tập lệnh tương tác:

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

4
Đó là trình duyệt đúng, nhưng tôi vẫn muốn biết cách nhấn enter nhiều hơn một lần nữa - trong một tập lệnh khác.
Sławosz

3
Chắc chắn rồi - đã cập nhật câu trả lời để bao gồm cách gửi dòng mới cho một tập lệnh.
Rudu

2
echo -e "\ n \ n \ n" | sshkeygen -t rsa không làm việc cho tôi, bạn có thể tự mình thử không? Nó chỉ vượt qua lần đầu tiên nhập. Nhưng mặt khác, tập lệnh đơn giản nó hoạt động.
Sławosz

1
Tôi đã kiểm tra nó trước khi tôi đăng nó - nó hoạt động tốt, mặc dù có vẻ như dấu gạch ngang từ ssh-keygenđã bị xóa - bạn đã thêm nó vào chưa? {sửa} Ngoài ra - bạn không thể chạy các kịch bản nhiều hơn một lần - nó thay đổi các câu hỏi để xác nhận bạn muốn ghi đè lên các hiện _rsakeyfile (do ay hay n cần phải được cung cấp)
Rudu

13
Tôi khuyên bạn nên sử dụng yes ""thay vì echo -e "\n\n\n"( yesxuất ra bất kỳ đối số nào được đưa ra [hoặc "y" theo mặc định] ở vô cực - hoàn hảo cho những trường hợp này khi người ta chỉ muốn cung cấp câu trả lời "có" cho bất cứ điều gì mà chương trình có thể nhắc)). yesngắn hơn và nên ssh-keygenthêm câu hỏi, câu hỏi đó cũng sẽ tự động được trả lời. :)
zrajm


1

Đồng ý với Michel Marro ngoại trừ việc nó cần thêm một số thứ nữa: Nếu tệp đã tồn tại, nó vẫn sẽ tương tác với yêu cầu xem có phải ghi đè lên nó hay không.

Sử dụng câu trả lời của câu hỏi này .

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

Việc chuyển hướng sang null là cần thiết để tắt thông báo ghi đè.


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

Hở? Điều này thực sự có ít dòng mới hơn so với một trong những câu trả lời bạn cho là không hoạt động (và đó là trên tập hợp con của các nền tảng echo -ephát ra thứ gì đó khác hơn -elà không phải ở đâu ssh-keygencũng có).
Charles Duffy

... để rõ ràng, tôi sử dụng sản xuất ssh-keygen -N ''như một phần của quy trình cài đặt tự động và nó hoàn toàn không đọc stdin, vì vậy không cần echo( bất kỳ echo biến thể nào ) được lắp vào đó. (Cấp, tôi tin rằng stdin được kết nối với /dev/nulltrong trường hợp sử dụng sản xuất của tôi, có cũng có thể là hành vi khác nhau khi nó gắn liền với một TTY, nhưng câu trả lời tốt hơn là </dev/nullhơn echo ... |)
Charles Duffy

1
Nó nhắc nhở tôi một filename: $ 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

Bạn nên sử dụng ed25519 để bảo mật và hiệu suất.

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

đây

-o Định dạng khóa OpenSSH thay vì PEM ​​cũ hơn (cần OpenSSH 6.5+)

-a Số lượng bài kiểm tra tính sơ bộ trong khi sàng lọc các ứng viên DH-GEX

-t Loại khóa (ed25519, RSA, DSA, v.v.)

-f /mypath/bla Đường dẫn và tên tệp đầu ra

-N "" Sử dụng mật khẩu trống

yes "y"không có tương tác.

Nó sẽ tạo ra hai tệp

/mypath/bla
/mypath/bla.pub

nơi blatệp là riêng tư và bla.pubcông khai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.