web-dev-qa-db-ja.com

Git BashとPageantはキーを使用していません

Git for Windows(MinTTYおよびPuTTY\plink.exe用に構成済み)とPuTTYがインストールされており、Bitbucketリポジトリで動作するようにしようとしています。 PageantとWebサイトにSSHキーをロードしましたが、プル/プッシュが必要なことをしようとするたびに:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

推奨されるssh -v [email protected]を実行すると、id_rsaが使用されますが、~/.sshの他のキーは使用されません。 ssh-add ~/.ssh/bitbucket_rsaを使用しようとすると、次の結果になります。

Could not open a connection to your authentication agent.

転送を許可するようにPuTTYを構成することを読みましたが、通常はアドバイスが終了するところであるため、このオプションをデフォルトセッションに設定し、そこに保存します。

psを実行して、実行中のアプリケーションを確認しましたが、ssh-agentは含まれていませんでした。 eval 'ssh-agent'を実行するとデーモンが起動しますが、違いはありません。

44
Dissident Rage

これが私のために働いた結果です。

ところで、私はWindowsでもBashを使用していますが、それは問題ではないと思います。

Sourcetreeをインストールし、そのフォルダーを_plink.exe_、_puttygen.exe_、および_pageant.exe_で指定しました。これらを個別にダウンロードしてインストールすることもできます。

Windows環境変数を構成する

  1. Windows 10の検索バーに「Environment」と入力します。それ以外の場合は、システムのプロパティ/システムの詳細設定を開き、環境変数を見つけます。
  2. 新しいシステム変数を追加します
    • 変数名:GIT_SSH
    • 変数値:_plink.exe_ファイルへのフルパス(同じフォルダーに_pageant.exe_と_puttygen.exe_がある場合もあります)。
      • 私のものは:C:\Program Files (x86)\Atlassian\SourceTree\tools\PuTTY\plink.exe
      • :新しいSourcetree(Windowsのv2)はバージョン管理されたディレクトリを使用するため、更新するたびにこれを更新する必要があり、これは苦痛です。 _plink.exe_のコピーを作成して、変更しない場所に置くのが最善です。
      • 上記のプログラムのいずれかを実行している場合は、いつでもタスクマネージャーを開いてプロセスを見つけ、フォルダーの場所を開いて_plink.exe_へのパスを取得できます。

利益

必ず端末を再起動して、更新された環境変数を取得してください。私の場合、統合端末で Visual Studio Code 内でBashを実行していたため、Visual Studio Codeを再起動する必要がありました。統合された端末を閉じて新しい端末を開くことは間違いなく受け入れられますが、Visual Studio Codeの組み込みgit機能も同様に機能するようにしたかったのです。

注意

Sourcetreeがインストールされていることを考えると、インターフェイスを使用してBitbucketからクローンダウンし、インターフェイスを介してプッシュすることができましたが、異なるクレデンシャルセットを使用していたため、ターミナルを介しての試行は機能しませんでした。

別の興味深い点は、プロジェクトの_./.git/config_にあるgit構成に移動すると、リモートをSSHからHTTPSに交換できることです。 BitbucketリポジトリのOverviewから次の値を取得できます。

Windows 10でHTTPSを使用しているときにWindows Credential Managerを使用することに気付きました(自分でこれを理解しようとして資格情報を追加しようとしましたが、SSHを使用していたので問題ありません)リモートリポジトリを使用すると、資格情報の入力を求められ、後でWindows Credential Managerで使用するために保存されます。

うまくいけば、これらの方法のいずれかがあなたのために働くでしょう。 HTTPSメソッドは、SSHキーの生成全体をスキップしてBitbucketにプッシュしますが、私にとってはより安全で移植性があります。

マックOS

特にVisual Studio Codeを使用していて、キーにパスフレーズがある場合は、キーチェーンにキーを追加する必要がある場合があります(現在、Visual Studio Codeではパスフレーズを入力できません)。

_ssh-add -K ~/.ssh/id_rsa
_

https://help.github.com/articles/generated-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to -the-ssh-agent

追加

これらが誰かに役立つかどうかはわかりませんが、Windows用のVisual Studio CodeにSSHのサポートを取得しているところです: https://github.com/Microsoft/vscode/issues/1368 =。

82
CTS_AE

あなたは物事を混ぜています。

PuTTYとPageantはOpenSSHツールと互換性がなく、相互に通信できません。 PuTTYはOpenSSHエージェントからキーを読み取ることができず、OpenSSHはPageantからキーを読み取ることができません。キーの形式も異なります。それはこの世界で悪いことですが、地平線上の解決策はありません。

また、「エージェント転送」は「エージェントの使用」とは異なるものです。

Gitをplinkで設定した場合(実際に行ったことを確認してください)、Pageantが実行されているかどうか、およびオプションの「Pageantを使用した認証」がPuTTYのConnection→- [〜#〜] ssh [〜#〜]Auth

問題が解決しない場合は、PuTTYからデバッグログを投稿してください。

4
Jakuje

SshでBitbucketを操作するためにPuTTYは必要ありません。git-for-windowsにパッケージ化されたOpenSSHバージョン(C:\prgs\git\PortableGit-2.7.0-64-bit\usr\bin\ssh.exe)は問題なく動作します。

現在のシェルセッションで、HOMEが%USERPROFILE%に設定されていることを確認してください(適切に構成された通常のCMDを開くにはPortableGit-2.7.0-64-bit\git-cmd.exeで十分です)。

%USERPROFILE%\.sshconfigという名前のファイルを作成します( Atlassianドキュメントのステップ ):

Host bitbucket.org
 IdentityFile ~/.ssh/bitbucket_rsa

(「/C/path/to/bitbucket_rsa」も使用できます。)

これにより、bitbucket.org:user/repoのようなSSH URLを使用できます。 ssh -Tv bitbucket.orgでテストします(もちろん、公開鍵をBitbucketアカウントに追加した後)。

注:ssh-agentは、秘密鍵がパスフレーズで保護されている場合にのみ必要です。

2年後の2018年の更新:「 MicrosoftがWindows 10にOpenSSHクライアントを追加するときにPuTTYに別れを告げます 」。本当にPuTTYを捨てる時です:別の(ppk)キー形式と 独自のソリューション は必要ありません OpenSSH はWindows機能として正式に配布されています(ベータ版)今のところ、2018年第1四半期)。

2
VonC

Git Bash for Windows 7でうまくいったこと:.pkkファイルをOpenSSH形式に変換する:

https://www.simplified.guide/PuTTY/convert-ppk-to-ssh-key

生成されたキーをGit BashのIdentityFile .ssh/configに追加します。例:

Host repository
     # My converted OpenSSH key
     IdentityFile /c/Users/me/open-ssh.pri

     # This repository server uses a specific name, not usually needed.
     User git

     # This repository server uses a specific port, not usually needed
     Port 8322

     # Repository server full name
     Hostname repo.server.com
1
apmattil

Windows上のGitに付属しているGit BashからPageantにロードされたSSHキーにアクセスするには、 このプログラム を使用できます。インストールプロセスは、リンク先のページで説明されています。

1
ivangretsky