純粋なGit Bashを使用したいとしますTortoiseGitやPuTTYを使用せずにのみのソリューション。また、パスフレーズなしでSSH鍵を生成した場合とほとんど同じであるため、パスフレーズを永続的に保存する必要はありません。しかし、それでも、いくつかのキャッシングを使用する必要があります。
キャッシュの目的ssh-agentで、Git Bashディストリビューションに含まれているプロセスが使用されます。このプロセスはデフォルトでは開始されないため、最初に起動する必要があります。SSHキーをキャッシュするには、これらのキーをこのプロセスに追加する必要がありますssh-addは、キーのパスフレーズの入力を求めてメモリに保存するコマンドを使用ます。
他のソリューションの欠点:
- GitHubの記事のssh-agentように自動起動すると、このセッションでSSHキーを使用する必要があるかどうかに関係なく、Git Bashを起動すると、最初からパスフレーズが要求されます。今日ローカルリポジトリで作業している場合は、本当に必要な場合(たとえば、リモートリポジトリと対話する場合)にのみパスフレーズを提供することをお勧めします。
- GitLabの記事で「いいね!」を起動するssh-agentと、おそらく毎回それを入力するのにうんざりします。おそらく、最終的には、これらの2行をeval $(ssh-agent -s).bashrcして自動起動する可能性があります。欠点は上記と同じですが、追加の1つがあります。新しいGit Bashターミナルを起動するたびに、追加のssh-agentプロセスが取得されます(GitHubのbashスクリプトは、そのプロセスがすでに開始されているかどうかをチェックします)。
- 上記の2つと同様ですが、特に、GitHub用とGitLab用の別のホストに個別のSSHキーがある場合は、一度にすべてを提供するのは面倒で不便です。
したがって、このソリューションは、Git BashがWindowsセッションごとに1回だけ、本当に必要なときにだけパスフレーズを要求するようにする方法を知りたい人のためのものです。GnuPGコミットによるパスフレーズ管理の動作に似ていますを使用して自動署名をdefault-cache-ttl。
必要に応じてGit Bashのみを使用して、パスフレーズを1回要求するようにSSHを構成する
- まず、- ssh-agentGit Bashシェルを起動するときにを自動起動します。そのために、変更されたGitHubのスクリプトを使用します。これは、プロセスがすでに開始されているかどうかをチェックするためですが、- ssh-addすぐにキーを押したくありません。このスクリプトは、- ~/.bashrcorまたは- ~/.profileorに移動します- ~/.bash_profile(- ~ユーザーのホームディレクトリのように- C:\Users\Username–実行- cd ~してから- pwd、Git Bashで出力します)。
 - ### Start ssh-agent
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
    (umask 077; ssh-agent >| "$env")  # use -t here for timeout
    . "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
fi
unset env
 
- 次に、- ~/.ssh/configファイルを編集または作成し、- AddKeysToAgentキャッシュをオンにするホストスタンザごとにオプションを追加します(すべてのホスト宣言の前にファイルの先頭にディレクティブを配置して、グローバルにオンにすることもできます)。
 - # GitHub.com
Host github.com
  Preferredauthentications publickey
  IdentityFile ~/.ssh/id_ed25519_github
  AddKeysToAgent yes
# GitLab.com
Host gitlab.com
  Preferredauthentications publickey
  IdentityFile ~/.ssh/id_ed25519_gitlab
  AddKeysToAgent yes
 - 
  - ssh config man ページから:このオプションがyesに設定されていて、キーがファイルから読み込まれる場合、ssh-add(1)の場合と同様に、キーとそのパスフレーズがデフォルトのライフタイムでエージェントに追加されます。 
 
デフォルトの最大存続期間は、永久に、またはssh-agentプロセスが強制終了されるまでです(タスクマネージャーから手動で、またはPCがシャットダウンされたとき)。有限のタイムアウトを使用したい場合は、ssh-agentの-tパラメーターで設定できます。上記の最初のステップからbashスクリプトの行を変更します。たとえば、キーキャッシュの有効期間を30分間にします。
(umask 077; ssh-agent -t 30m >| "$env")
その他の時刻形式修飾子については、こちらをご覧ください。