パスワードなしでssh-keygen -t rsa
を自動化する必要があります。つまり、プロンプトで入力します。
どうすればシェルスクリプトからできますか?
パスフレーズの入力を求められずにSSHキーペアを生成するには、次の操作を実行できます。
$ ssh-keygen -f id_rsa -t rsa -N ''
WindowsのPowerShellからこれを行う必要がある場合は、次を使用します。
ssh-keygen -f $Name -t rsa -N '""'
また、git binディレクトリがパスにあることを確認する必要があります。
$sshPath = "<path>\git\bin\"
$env:path += ";$sshPath"
それからPoshGitで使用するには、次のようにします。
Add-SshKey "<path>\.shh\KeyFilename"
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
答え2を修正するだけです... OLおよびRHELシステムで、ファイル名がid.rsaではなくid_rsaであることがわかりました。
したがって、OLまたはRHELシステムでは、コマンドは次のようになります。
$ ssh-keygen -f id_rsa -t rsa -N ''
どうですか:
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.
(つまり、Debian 9.4 stretchのopenssh-client
パッケージで:OpenSSH_6.7p1 Debian-5+deb8u4
)
$ printf '\n' | ssh-keygen -N ''
Bashスクリプトでssh-keygenコマンドを自動化し、最終的な回答を私にうまく機能させる必要がありました。
echo -e "\n" | ssh-keygen -N "" &> /dev/null
-eを指定したechoコマンドは、「\ n」をEnterキーとして解釈しますが、パスフレーズでは機能しません。次に、オプション-N ""(空のパスフレーズ)を使用すると、パスワードは空になり、何も要求されません。 &>/dev/nullは「stdout」と「stderr」を/ dev/nullに送信するため、ディスプレイには何も印刷されません。