Tự động hóa ssh-keygen -t rsa để nó không yêu cầu cụm mật khẩu


164

Tôi cần tự động hóa ssh-keygen -t rsavới một mật khẩu tức là nhập tại dấu nhắc.
Làm thế nào tôi có thể làm điều đó từ một kịch bản shell?

Câu trả lời:


230

Để tạo cặp khóa SSH mà không được nhắc nhập cụm mật khẩu, bạn có thể làm như sau:

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

2
Đã làm cho tôi! Github luôn yêu cầu mật khẩu mà không có tùy chọn -N ngay cả khi không nhập mật khẩu sau khi quảng cáo "Nhập cụm mật khẩu (trống không có cụm mật khẩu)"
Hollerweger

4
Trên RHEL 6, tôi đã gặp lỗi này: " ssh-keygen: option requires an argument -- N" :(
Anthony O.

1
OK, điều này là do tôi đã sử dụng dzdolệnh trước nó, vì vậy tôi phải viết:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
Anthony O.

1
Dường như không gian ngăn cách giữa tùy chọn và cụm mật khẩu trống -N ''là có ý nghĩa. Khi tôi thêm không gian, nó đã thành công!
GH05T

33

Nếu bạn cần làm điều này từ PowerShell trong windows, hãy sử dụng:

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

lưu ý bạn cũng phải đảm bảo thư mục git bin nằm trong đường dẫn của bạn:

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

$env:path += ";$sshPath"

Sau đó, để sử dụng nó trong PoshGit, chỉ cần:

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

Cảm ơn vì điều đó. BTW, git\usr\binlà thư mục chính xác.
Majkinetor

4
Điều này không làm việc cho tôi. Tôi gặp lỗi "Khóa lưu" mykey "không thành công: cụm mật khẩu quá ngắn (tối thiểu bốn ký tự)". Tôi đã phải chuyển các dấu ngoặc kép / đơn, ví dụ ssh-keygen -f $Name -t rsq -N '""'.
Aaron Jensen

1
@AaronJensen cũng vậy với tôi. Cảm ơn đã sửa chữa. Tôi đã sử dụng'""'
Trevor Sullivan

@AaronJensen Cảm ơn! '""'là biến thể duy nhất làm việc cho tôi.
Somnium

@ Daniel-Little Tôi không thể tìm thấy mô-đun PoshGit, người duy nhất tôi tìm thấy với tên này là posh-git mà dường như không có lệnh ghép ngắn này. Bất kỳ thông tin thêm về nó?
Jim

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

Câu trả lời này về cơ bản là sao chép và dán từ câu trả lời của Shamoon
oᴉɹǝɥɔ 21/03/18

@ oᴉɹǝɥɔ Câu trả lời của Shamoon không chỉ định rõ ràng đường dẫn đến khóa riêng.
GMaster

11

Chỉ cần chỉnh sửa để trả lời 2 ... Tôi phát hiện ra trên hệ thống OL và RHEL của mình, tên tệp phải là id_rsa chứ không phải id.rsa.

Vì vậy, trên hệ thống OL hoặc RHEL, lệnh sẽ là:

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

2
Theo như tôi hiểu id_rsalà tên tệp mặc định cho khóa RSA, vì vậy nếu bạn muốn giữ mặc định, bạn không bị buộc phải sử dụng -ftùy chọn một cách rõ ràng .
danidemi

3
@danidemi trong khi bạn đúng rằng đó là mặc định, một lý do để chỉ định -ftùy chọn là để bạn có thể thực hiện điều này trong một tập lệnh. Bạn chỉ có thể xác nhận lại mặc định để vô hiệu hóa lời nhắc tiếp theo.
Tristan Reid

9

Thế còn :

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

Như đã lưu ý trong 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.

(đó là với openssh-clientgói trong Debian 9.4 căng OpenSSH_6.7p1 Debian-5+deb8u4:)


Làm việc cho tôi cảm ơn. (OpenSSH_7.6p1 Ubuntu-4ubfox0.2)
David Webster

0

Tôi cần tự động hóa trong tập lệnh bash lệnh ssh-keygen và câu trả lời cuối cùng phù hợp với tôi:

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

Lệnh echo với -e phiên dịch "\ n" dưới dạng phím Enter, nhưng không hoạt động với cụm mật khẩu. Sau đó, sử dụng tùy chọn -N "" (cụm mật khẩu trống) mật khẩu sẽ trống và sẽ không yêu cầu bất cứ điều gì. &> / dev / null sẽ gửi 'stdout' và 'stderr' tới / dev / null để không có gì được in qua màn hình.


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.