web-dev-qa-db-ja.com

Windowsでgitがパスフレーズを思い出せない理由

私はgitを使い始めたばかりで、cmd.exe昇格を使用しているパスフレーズを思い出せず、gitホストはgithubであり、githubでそのガイドのようなsshキーを作成しています

しかし、私はまだ得る

*\subnus.mvc>git Push Origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':
125
Nesizer

私はこの質問が2歳のときに出てくることを理解していますが、私は同じ問題を抱えており、ここでいくつかの答えは完全に質問に答えませんでした。 msysgitに加えてTortoiseGitを使用するかどうかに応じて、2つの段階的なソリューションを示します。

最初の解決策Windows、msysgit、およびPuTTYを想定しています。

  1. 指示に従ってmsysgitとPuTTYをインストールします。
  2. (オプション)PuTTYをパスに追加します。 (これを行わない場合、以下のPuTTYコマンドへの参照には、適切な実行可能ファイルへのフルパスをプレフィックスとして付ける必要があります。)
  3. まだ行っていない場合は、GitHubの指示に従って、またはGitホストの指示に従ってキーハッシュを生成します。
  4. 繰り返しますが、まだ行っていない場合は、puttygen.exeを使用してキーをPuTTYのpageant.exeで使用するために変換します。手順は、PuTTYのドキュメント、 この役立つガイド 、およびサイバースペースの他のいくつかの場所にあります。
  5. PuTTYのpageant.exeを実行し、.ppkファイルを開き(「キーの追加」)、キーのパスフレーズを入力します。
  6. Windowsの環境変数ダイアログにアクセスします([コンピューター]を右クリックし、[プロパティ]をクリックします。[システムの詳細設定]または[詳細]タブをクリックし、[環境変数]をクリックします)。次の環境変数を追加します。

    GIT_SSH = C:\ full\path\to\plink.exe

    「C:\ full\path\to」を、plink.exeが見つかったPuTTYへの完全インストールパスに置き換えます。 「ユーザー変数」セクションに追加することをお勧めします。また、plink.exeに使用するパスがPageant(pageant.exe)に使用するパスと一致することを確認してください。場合によっては、PuTTYが他のアプリケーションと一緒にインストールされる可能性があるため、PuTTYが複数インストールされている場合があります。あるインストールのplink.exeと別のインストールのpageant.exeを使用すると、問題が発生する可能性があります。

  7. コマンドプロンプトを開きます。

  8. Github.comでホストされているgitリポジトリに接続しようとしている場合は、次のコマンドを実行します。

    plink.exe [email protected]

    接続しようとしているgitリポジトリが別の場所でホストされている場合、[email protected]を適切なユーザー名とURLに置き換えます。 (Githubを想定)サーバーのホストキーがキャッシュされていないことを通知し、信頼できるかどうか尋ねられます。 yと答えます。これにより、サーバーのホストキーがPuTTYの既知のホストのリストに追加されます。このステップがないと、gitコマンドは正しく機能しません。 Enterキーを押すと、Githubはシェルアクセスを提供しないことを通知します。それは大丈夫です...私たちはそれを必要としません。 (他のホストに接続していて、シェルにアクセスできる場合は、おそらく何もせずにリンクを終了することをお勧めします。)

  9. 全部終わった! Gitコマンドはコマンドラインから動作するようになりました。 pageant.exe ブート時に.ppkファイルを自動的にロード が必要になる場合があります。これは、必要になる頻度によって異なります。

2番目の解決策Windows、msysgit、およびTortoiseGitを想定しています。

TortoiseGitには、PuTTY実行可能ファイルと、物事を簡単にする特別に修正されたバージョンのplink(TortoisePlink.exeと呼ばれる)が付属しています。

  1. 指示に従ってmsysgitとTortoiseGitをインストールします。
  2. まだ行っていない場合は、GitHubの指示に従って、またはGitホストの指示に従ってキーハッシュを生成します。
  3. 繰り返しますが、まだ行っていない場合は、TortoiseGitのputtygen.exeを使用してTortoiseGitのpageant.exeで使用するためにキーを変換します。手順は、PuTTYのドキュメント、最初のソリューションにリンクされた役立つガイド、およびサイバースペースの他のいくつかの場所にあります。
  4. TortoiseGitのpageant.exeを実行し、.ppkファイルを開いて(「キーの追加」)、キーのパスフレーズを入力します。
  5. Windowsの環境変数ダイアログにアクセスします([コンピューター]を右クリックし、[プロパティ]をクリックします。[システムの詳細設定]または[詳細]タブをクリックし、[環境変数]をクリックします)。次の環境変数を追加します。

    GIT_SSH = C:\ full\path\to\TortoisePlink.exe

    「C:\ full\path\to」を、TortoisePlink.exeが存在するTortoiseGitへのフルインストールパスに置き換えます。 「ユーザー変数」セクションに追加することをお勧めします。また、TortoisePlink.exeに使用するパスがPageant(pageant.exe)に使用するパスと一致することを確認してください。場合によっては、PuTTYが他のアプリケーションと一緒にインストールされる可能性があるため、PuTTYが複数インストールされていることがあります。 TortoiseGitインストールからTortoisePlink.exeを使用し、別のアプリケーションの別のインストール(またはスタンドアロンPuTTYインストール)からpageant.exeを使用すると、問題が発生する可能性があります。

  6. 全部終わった! Gitコマンドはコマンドラインから動作するようになりました。 gitリポジトリに初めて接続しようとすると、おそらくサーバーのホストキーがキャッシュされていないことが通知され、サーバーを信頼するかどうかを尋ねられます。 「はい」をクリックします。 (これは、動作中のTortoisePlink.exeです。)

    Pageant.exe ブート時に自動的に.ppkファイルをロード が必要になる場合があります。これは、必要になる頻度によって異なります。

3番目の解決策Window、msysgit、およびネイティブコマンドプロンプトを想定しています。

  1. Msysgitをインストールする
  2. MS-DOSコマンドプロンプトでgitを使用できるようにしてください
  3. 実行start-ssh-agent
  4. SSHパスフレーズを入力してください
  5. 全部終わった! Gitコマンドがネイティブコマンドプロンプトで機能するようになりました。
196
RobertB

より詳細な手順が必要な場合は、このページを参照してください: http://help.github.com/working-with-key-passphrases/

19
Franz

Git bashを使用している場合Windows以下を実行できます。

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

2番目のコマンドでパスフレーズを要求しますが、それだけです。追加のアクション(パスフレーズが必要だった)を実行するたびに、パスフレーズが要求されることはありません(以下のスクリーンショットの例を参照)。

adding pass phrase in Git bash on Windows

それが役に立てば幸い。

乾杯、

男。

12
Guy Avraham

質問が投稿されてから5年、8か月、6日後の1つの追加ソリューションは悪い考えではないので、ここに進みます。

注:Windowsコンピューターを使用していると仮定します。

  1. git-credential-winstore をダウンロードします。
  2. それを実行します! PATH環境変数にGITがある場合、それは機能するはずです。そうでない場合は、git-credential-winstore -i C:\Path\To\Git.exeを実行します。

次にリポジトリにコミットしようとすると、資格情報を入力するよう求められます。それであるはずです。パスワードを変更するまで、資格情報の入力は求められなくなります。


あなたの知識だけのために...あなたの資格情報はWindows資格情報ストアに保存されます

資格情報はどこに保存していますか?

このアプリは、既存のWindows資格情報ストアを使用して資格情報を保持するだけです。保存された資格情報を表示するには、[コントロールパネル]> [ユーザーアカウント]> [資格情報マネージャー]に移動し、[Windows資格情報]を選択します。 「git:」で始まるエントリは、git-credential-winstoreからのものです。

12
Alex Essilfie

それはgitではなく、sshです。

私はウィンドウを行いませんが、sshにはパスフレーズを記憶できるエージェントの概念があります。 OS Xでは、これがデフォルトで有効になっています。あなたのsshクライアントにはおそらくこれを設定する方法があります。

10
Dustin

キーファイルにパスワードを設定した場合、接続時に常にそのパスワードを入力する必要があります。パスワードなしのキーを作成する場合、毎回入力する必要はありませんが、キーファイルにアクセスできる人はだれでもgithubアカウントに接続できます。

ssh-agentも機能する場合があります。それを実行してみて、パスフレーズが記憶されるかどうかを確認してください。

7
Grant Limberg

[編集-質問を読み違え、これは関連する問題への答えです。後世のために言い換えバージョンを残す]

私の場合は、サーバーの1つでホストされているレポにプッシュしようとしていたということです。プッシュを実行しようとするたびに、gitはパスワードを要求します(nb-秘密鍵のパスフレーズではなくパスワード)。

私の公開鍵をサーバー上の許可された鍵に追加することにより、そのサーバーへのパスワードなしのプッシュを取得することができました。そして、秘密鍵にpassphraseがなかったので(これは悪い習慣です!)、何も入力する必要がありませんでした。

サーバーに公開鍵を追加するコマンドは次のとおりです。ユーザーgitがサーバー上のユーザーであると想定しています。

cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys'

サーバーにログオンし、~/.ssh/authorized_keysのファイルに公開キーを手動で追加することで、同じことを実現できます。

7
hwjp

私はこれが数年遅れていることを知っていますが、解決策を見つけようとしてこの質問に出くわし、すべてのレベルの専門知識に合ったものを見つけたので、共有したいと思いました。

GitHubは、すべてを素晴らしく簡単にする非常に役立つインストーラーを提供します。 https://help.github.com/articles/caching-your-github-password-in-git/

4
roobeedeedada

パスワードがプレーンテキストで保存されていて、TortoiseGitを使用している場合は、この問題に対するmuchより簡単な解決策があります。

単に_netrcユーザープロファイルディレクトリ内のファイル-つまり、Windows 7ではC:\Users\MyName\_netrc。このファイルには、ログイン情報が次の形式で保存されます。

machine bitbucket.org login thisismyname password p455w0rD
machine bitbucket.org login another_account password pwdpwdPWd
machine github.com login thisismynameagain password p455w0rD

TortoisePLinkをSSHクライアントとして使用していますが、問題なく動作します。

3
blade

.bashrcのようなユーザーのホームディレクトリにC:/Users/youruserファイルを作成し、そこに配置できます。

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$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
    ssh-add
Elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

このスクリプトは、bashの実行後に毎回実行されます。したがって、git-bashが開始されたときにパスワードを入力する必要があるのは1回だけです。

Bashの一部のバージョンでは、.bash_profileの代わりに.bashrcファイルが必要です。そのため、クローン.bashrc

copy .bashrc .bash_profile
2

実行するときに-k argを追加してみてください。

ssh-add -k ~/.ssh/id_rsa
1
tarikakyol