Centos7でシェルスクリプトを使用してSSHキーのペアを自動生成したいのですが、試してみました
yes "y" | ssh-keygen -t rsa
echo "\n\n\n" | ssh-keygen...
echo | ssh-keygen..
これらのコマンドはすべて機能せず、1 つの「Enter」を入力するだけで、シェル スクリプトが「パスフレーズを入力してください (パスフレーズがない場合は空)」で停止します。シェルで複数の「Enter」を連続的にシミュレートする方法を知りたいだけです。
どなたか助けていただけると大変ありがたいです!
ベストアンサー1
達成する必要がある2つのステップ自動的に:
パスフレーズを入力してくださいフラグを使用します
-N
(この例では void 文字列)。ssh-keygen -t rsa -N ''
キーファイルを上書きする:
-f
パス(この例ではid_rsa
)とここに文字列答えるはい次の質問に対して:
ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<<y >/dev/null 2>&1
あるいは、bash
同じような殻の下で、もしあなたが以前のものを上書きしたい、ただここに文字列にコマンドを入力するあらゆるニーズに対応入力:
ssh-keygen -q -t rsa -N '' <<< $'\ny' >/dev/null 2>&1
からssh-keygen
男ページ:
-N new_passphrase provides the new passphrase. -q silence ssh-keygen. -f filename specifies the filename of the key file.
ステップバイステップの説明
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/klashxx/.ssh/id_rsa):
1) キーを入力しないようにするには、次を使用します-f
。
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)?
注意: RSA ファイル名を気にせず、確実に以前のファイル名を上書きしたい場合は、ポイント 4 の下の手順を確認してください。
2) では、「ええ「自動的に質問を上書きする(ここに文字列その仕事のために):
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa <<< y
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)? Enter passphrase (empty for no passphrase):
3) 最後に、-N
フラグを使用して void パスを入力します。
$ ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa <<< y
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)? Your identification has been saved in /home/klashxx/.ssh/id_rsa.
Your public key has been saved in /home/klashxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Xo0t6caMB/8TSsigxfY28JIfqYjyqxRZrFrPncx5yiU klashxx@server
The key's randomart image is:
+---[RSA 2048]----+
| |
| . |
| o . |
| + * = |
| +. + BSo= o |
|...o.+o+XO... |
|.. .o.E==+B. . |
|o . ...=.o... |
|.+o. o .. |
+----[SHA256]-----+
4)追加ボール出力をクリーンアップし、戻りコードを確認するだけです。
$ ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<<y >/dev/null 2>&1
$ echo $?
0
以前の RSA ファイルを上書きするための代替パス (-f フラグは不要)
注記:bash
貝殻だけが好きです。
RSA 名を気にせず、単に上書きしたい場合は、次の 2 つの質問に自動的に答える必要があります。
キーを保存するファイルを入力してください: /example/path/.ssh/id_rsa は既に存在します。
上書きしますか? (y/n)?
これを手動で行う場合、最初の質問では入力、2 番目は と入力してy
押しますenter
。
これらのアクションは、次のものを使用してシミュレートできます。ここに文字列:
$'\ny'
man ページからbash
:
$'string' 形式の単語は特別に扱われます。この単語は、ANSI C 標準で指定されているように、バックスラッシュでエスケープされた文字が置き換えられた "string" に展開されます。
\n 改行
したがって、od
文字列を分析するために次のようにします。
cat - <<< $'\ny' | od -c
0000000 \n y \n
質問に答えるのに必要なものだけが得られていることがわかります。
ポイント1と2は次のようにまとめられる。:
ssh-keygen -q -t rsa <<< $'\ny'
そしてその最終命令次のようになります:
$ ssh-keygen -q -t rsa -N '' <<< $'\ny' >/dev/null 2>&1
$ echo $?
0
称賛
@lukasz-dynowski、@redochka、@mellow-yellow、@yeti およびこのスレッドの残りの人々。