ssh-keygen -t rsaを自動化して、パスフレーズを要求しないようにする


164

ssh-keygen -t rsaパスワードなしで自動化する必要があります。つまり、プロンプトで入力します。
シェルスクリプトからどうすればよいですか?

回答:


230

パスフレーズの入力を求められずにSSHキーペアを生成するには、次のようにします。

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

2
私のために働いた!Githubは、「Enter passphrase(empty for no
passphrase

4
RHEL 6では、次のエラーが発生しました: " ssh-keygen: option requires an argument -- N" :(
Anthony O.

1
OK、私が使用しているため、これはだったdzdoそれの前のコマンドを私が書かなければならなかったので、:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
アンソニーO.

1
オプションと空のパスフレーズを区切るスペース-N ''が重要なようです。スペースを追加すると成功しました!
GH05T 2018年

33

WindowsでPowerShellからこれを行う必要がある場合は、次のコマンドを使用します。

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

git binディレクトリがパスにあることも確認する必要があることに注意してください。

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

$env:path += ";$sshPath"

それをPoshGitで使用するには、次のようにします。

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

これをありがとう。ところで、git\usr\bin正しいディレクトリです。
majkinetor 2016年

4
これは私にはうまくいきません。「キー「mykey」の保存に失敗しました:パスフレーズが短すぎます(4文字以上)」というエラーが表示されます。二重引用符と単一引用符を切り替える必要がありましたssh-keygen -f $Name -t rsq -N '""'
アーロンジェンセン

1
@AaronJensenも同じです。修正をありがとう。私が使用した'""'
Trevor Sullivan、

@AaronJensenありがとう!'""'私のために働いた唯一のバリアントです。
ソムニウム

@ Daniel-Little PoshGitモジュールが見つかりません。この名前で見つかったのはposh-gitだけで、このコマンドレットがないようです。それについてもっと情報がありますか?
ジム

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

この回答は、基本的には
Shamoonの

@oᴉɹǝɥɔShamoonの回答では、秘密鍵へのパスを明示的に指定していません。
GMaster 2018年

11

答えを2に訂正するだけです...私のOLおよびRHELシステムでは、ファイル名はid.rsaではなくid_rsaであることがわかりました。

したがって、OLまたはRHELシステムでは、コマンドは次のようになります。

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

2
私が理解してid_rsaいる限り、RSAキーのデフォルトのファイル名です。したがって、デフォルトに固執したい場合は、-fオプションを明示的に使用する必要はありません。
danidemi

3
@danidemiがデフォルトであることが正しい場合、-fオプションを指定する1つの理由は、これをスクリプトで実行できるようにするためです。デフォルトを再確認して、後続のプロンプトを無効にすることができます。
Tristan Reid

9

について:

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

で述べたように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.

(すなわち、であるopenssh-clientDebianの9.4ストレッチパッケージ。OpenSSH_6.7p1 Debian-5+deb8u4


おかげで私のために働いた。(OpenSSH_7.6p1 Ubuntu-4ubuntu0.2)
David Webster

0

私はbashスクリプトでssh-keygenコマンドを自動化する必要がありましたが、最終的にはうまくいきました。

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

-eを指定したechoコマンドは、「\ n」をEnterキーとして解釈しますが、パスフレーズでは機能しません。次に、オプション-N ""(空のパスフレーズ)を使用すると、パスワードは空になり、何も要求されません。&> / dev / nullは「stdout」と「stderr」を/ dev / nullに送信するため、ディスプレイには何も表示されません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.