web-dev-qa-db-ja.com

ソースツリーSSH公開キーが拒否されました

https://www.bitbucket.com のプライベートリポジトリでプロジェクトに取り組んでいます。

ローカルでコーディングし、BitBucketのWindows Gitクライアント Sourcetree を使用して、更新のステージング、コミット、プッシュを行っています。

その後、リモートsharedサーバーからファイルをプルします。これにはSSH認証が必要です。

Gitリポジトリをbitbucketアカウントに接続するために、次のことを試しました。

  1. 組み込みSourcetree SSHエージェント(Pageant)を起動しました
  2. パスフレーズを使用してPageantに.ppk(PuTTY秘密鍵)を追加しました
  3. プロジェクトの場所でSourceTreeターミナルを開き、_C:/Project_と呼びましょう。
  4. _git init_を使用して、リポジトリを初期化しました。
  5. リポジトリをコンピューターからBitBucketにプッシュするために_git Push -u Origin --all_を使用しました。
  6. このエラーが発生しました:Permission denied (publickey).
  7. _ssh -Tv [email protected]_できるかどうか試してみました-それでも、_Permission denied_。

私は正確に何が間違っていたかを理解しようとしています-それは私のSSHキーをまったく見つけましたか?キーは特定の場所にロードされていませんか?

注:BitBucketのプロファイルに公開キーをロードしました。

36
t0mgs

まあ-私は多くの試行錯誤の後に解決策を見つけました。どうやら、PuTTYのkeygenを使用して、_.sshフォルダーが機能しません。ただし、ssh-keygenIN GIT BASHそして、新しく生成されたキーペアを使用してログインしようとすると、正常に機能します。何よりも好奇心から-私はこれがなぜそうなのか知りたいです。

9
t0mgs

Macで新しいSierraを使用している場合に同じ問題が発生する可能性のある人。解決策は、次の方法で秘密鍵をSSHエージェントに追加することです。

ssh-add -K ~/.ssh/id_rsa

ID [id_rsa]はSSHエージェントによって保持されないようです。

これは永続的な解決策ではないことに注意してください。新しいリポジトリを複製するたびにそれを行う必要があります。少なくとも、リモートへのプッシュごとに秘密鍵を提供する必要はありません。

--------アップデート2017年9月28日--------

永続的なソリューション(シエラで):

手順:

1-何かをする前に、バックグラウンドで実行中のssh-agentがあることを確認してください。

Ssh-agentが実行されているかどうかを確認するには:

pgrep 'ssh-agent'

そのコマンドは、実行中のプロセスのPID(ProcessID)を返します。値が表示された場合..ステップ2に進みます。そうでない場合は、そのエージェントをバックグラウンドで実行する必要があります。

eval "$(ssh-agent -s)"

2-編集~/.ssh/configsuとして存在しない場合は作成):

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

3-次に、そのキーエージェントを追加します(これは1回になります)。

ssh-add -K ~/.ssh/id_rsa

それでおしまい。

実際にはステップ#2が重要です。完全なガイドを提供したいだけです。

それがお役に立てば幸いです。」.

79
Maher Abuthraa

これらの設定SourceTreeをさらに変更する必要がありました。enter image description here

17
ApceH Hypocrite

私はこれが解決されたことを知っていますが、受け入れられた答えに追加するために、これが機能するために実際にGit Bashを必要としません。 Cupcakeが言ったように、PuTTYが秘密キー用の.ppkファイルを出すことは事実です。これは通常のPuTTY/Pageantコンテキスト以外では機能しません。

これは、ターミナルがデフォルトでid_rsaという名前のファイルを~/.sshで見つけることを期待し、PuTTYがデフォルトでそれを生成しないためです。しかし、Git Bashのssh-keygenは機能します。そのため、Tom Granotのソリューションは機能します。ただし、PuTTYキージェネレーターを使用して、メニューのConversions/Export OpenSSH Key...オプションを使用して、まったく同じファイルをエクスポートできます。必ずid_rsaという名前を付けて、id_rsa.pubファイルの隣に配置してください。すべて正常に機能するはずです。

10

これは、MacでSourcetreeを更新した後に起こりました。私のために働いたのは、~/.ssh/フォルダーと.configフォルダーを除くknown_hostsフォルダー内のすべてを単に削除することでした。次に、基本設定でソースツリーに移動し、githubアカウントを削除し、すべての.ssh公開鍵と秘密鍵を削除してからプロファイルを再度追加します。ソースツリーはローカルおよびGitHubに鍵を再追加する必要があります

2
Rashad Akoodie