[解決済み] ssh-keygen をプロンプトなしで実行する方法
質問
Centos7 でシェルスクリプトを使用して ssh 鍵のペアを自動生成したいのですが、以下のことを試してみました。
yes "y" | ssh-keygen -t rsa
echo "\n\n\n" | ssh-keygen...
echo | ssh-keygen..
これらのコマンドはすべて動作しません。1つの'enter'を入力するだけで、シェルスクリプトは"Enter passphrase (no passphraseの場合は空)"で停止します。 シェルで連続して複数の'enter'をシミュレートする方法を知りたいのです。
誰かが助けることができる場合、多くの感謝を!
どのように解決するのですか?
私たちは、以下のことを達成する必要があります。 2つのステップ を自動的に行う必要があります。
-
パスフレーズを入力する . 使用する
-N
フラグを使用します (この例では void string)。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 ) さて、次は " に答える必要があります。 y "に自動的に 上書き質問 (を使用しましょう)。 ここで文字列 を使用します)。
$ 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 pass を入力します。
$ 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'
から
bash
のマニュアルページを参照してください。
string' 形式の単語は特別に扱われます。この単語は、次のように展開されます。 に展開され、バックスラッシュでエスケープされた文字が、ANSI C 標準規格で指定されたとおりに置き換えられます。 に展開され、バックスラッシュでエスケープされた文字がANSI C標準の指定に従って置き換えられます。
\改行する
ということで、もし
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さん、そしてこのスレッドにいる他の人たち。
関連
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] ssh "パーミッションが開きすぎています "エラー
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Git上でシェルコマンドを実行する際に使用するSSH-keyの秘密鍵を指定する方法は?
-
[解決済み] SSHキー - まだパスワードとパスフレーズを要求される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
LinuxでPingを無効にする、または許可する設定方法
-
deepinシステムのバージョン番号を見るには?deepinシステムのバージョン情報を見るコツ
-
ロックされたdeepinファイルを削除する方法は?deepinのロック付きファイルを削除する方法のヒント
-
Linux Mintシステムでプログラムをアンインストールするには? Linux で不要なアプリケーションをアンインストールするためのヒント
-
2020年deepin Deep OS V20のアップデートによる更新情報
-
GCCのバージョンによる浮動小数点演算の例外発生
-
sudo が sudo として表示される: setuid root である必要がある
-
[解決済み] エクスポートあり/なしの変数の定義
-
[解決済み] Bashです。構文エラー: リダイレクトが予想外
-
[解決済み] ssh 鍵を生成する bash スクリプトの enter キー押下を自動化する。