2013-04-08 27 views
26

Vì vậy, tôi có kịch bản này, nơi một cuộc gọi từ xa sẽ được thực hiện cho một máy mục tiêu. Có thể nhiều hơn một cuộc gọi sẽ được thực hiện để tạo ra các khóa ssh, trong trường hợp đó kịch bản sẽ treo khi nó yêu cầu ghi đè (y/n).Làm cách nào để chạy ssh-keygen để nó ghi đè lên mà không nhắc liệu một cert key có tồn tại không?

Có cách nào thích hợp cách yêu cầu ghi đè không tương tác (hoặc bỏ qua âm thầm) các phím nếu tìm thấy không?

Có vẻ như không phải là một --force hoặc tùy chọn --overwrite trong

man ssh-keygen 

mà tôi có thể tìm thấy. Có lý do nào để nó hoạt động theo cách này hay đây là lỗi mà tôi nên báo cáo cho các tác giả?

Mọi trợ giúp đều được đánh giá cao.

+3

Thú vị ... có vẻ như một số nhà bảo trì của nhà phân phối chọn tắt tính năng này. Nhìn vào http://www.dsm.fordham.edu/cgi-bin/man-cgi.pl?topic=ssh-keygen&sect=1 ở đó ** là ** một lá cờ để ghi đè. Các trang người đàn ông trên centos 6.2 và debian squeeze không có tùy chọn, và ssh-keygen được gọi với -o barfs. – tink

+0

Stack Overflow là trang web cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như không có chủ đề vì nó không phải là về lập trình hay phát triển. Xem [Tôi có thể hỏi những chủ đề gì ở đây] (http://stackoverflow.com/help/on-topic) trong Trung tâm trợ giúp. Có lẽ [Super User] (http://superuser.com/) hoặc [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) sẽ là một nơi tốt hơn để hỏi. Đồng thời xem [Tôi nên đăng câu hỏi về Dev Ops ở đâu?] (Http://meta.stackexchange.com/q/134306) – jww

+0

@jww Nhận xét này trễ 4 năm. Câu hỏi đã bị đóng làm chủ đề tắt. – NuclearPeon

Trả lời

42

Bạn có thể làm việc xung quanh này thusly:

echo -e 'y\n'|ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa 

Nó sẽ vẫn ra dấu nhắc, nhưng hoàn tất quá trình và ghi đè lên tập tin.

+0

echo -e 'y \ n' | ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa – NewPtone

+2

Nó sẽ không xuất ra lời nhắc nếu bạn thêm '1>/dev/null' vào kết thúc :) – g33kz0r

+0

@ mihir6692 - Bạn có lẽ nên thêm câu trả lời của riêng bạn. – jww