web-dev-qa-db-ja.com

プロンプトなしでssh-keygenを実行する方法

Centos7でシェルスクリプトを使用してsshキーのペアを自動生成したいのですが、

yes "y" | ssh-keygen -t rsa
echo "\n\n\n" | ssh-keygen...
echo | ssh-keygen..

これらのコマンドはすべて機能せず、「enter」を1つ入力するだけで、シェルパス「Enter passphrase(empty for no passphrase)」で停止します。シェルで複数の「enter」を連続してシミュレートする方法を知りたいだけです。

誰か助けてくれてありがとう!

21
Jeremy Wang

-Nフラグを使用してvoidパスを入力するだけです:

ssh-keygen -t rsa -N ""

manページから:

 -N new_passphrase
         Provides the new passphrase.

Id_rsaを上書きするには

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

キーを保存するファイルをユーザーに要求しない場合は、ファイル出力フラグ-fコマンドに。

ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa

この方法では、id_rsaファイルが既に存在しない限り、ユーザーは入力を求められません。

26
Lukasz Dynowski

私にとって、sshコマンドで使用するときは、@ Lukasz answerと@Juan oneの両方の組み合わせを使用する必要がありました

ssh -p$SSH_PORT -q joker@$INSTANCE_IP 'yes y | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa'
1
redochka