web-dev-qa-db-ja.com

Git使用時のPermission denied(publickey)エラーを解決するには?

私はMac Snow Leopardを使っていて、gitをインストールしました。

試したばかり

git clone [email protected]:cakebook.git

しかし、それは私にこのエラーを与えます:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

何が足りないの?
私はssh-keygenをパスフェーズなしでやろうとしましたが、それでも同じエラーになります。

519
teepusink

ユーザーは以前に設定されたssh公開鍵/秘密鍵ペアを生成していませんか?

この情報はtheChawに取り組んでいますが、SSH公開鍵認証をサポートする他のすべてのgitリポジトリに適用することができます。 (例えば gitolite 、gitlab、githubを見てください。)

最初にあなた自身の公開/秘密鍵ペアセットを設定することから始めます。これはDSAかRSAのどちらかを使用することができます、従って基本的にあなたが設定するどんなキーでも動作します。ほとんどのシステムではssh-keygenを使うことができます。

  • まずあなたの.sshディレクトリにcdしたいでしょう。ターミナルを開いて実行してください:

    cd ~/.ssh && ssh-keygen

  • 次にあなたはこれをあなたのクリップボードにコピーする必要があります。
    • OS Xでは、次のように実行します。cat id_rsa.pub | pbcopy
    • Linuxでは、cat id_rsa.pub | xclipを実行します。
    • Windowsの場合(Cygwin/Git Bash経由):cat id_rsa.pub | clipを実行してください。
  • Webサイトであなたのアカウントにあなたの鍵を追加してください。
  • 最後に.gitconfigを設定してください。
    • git config --global user.name "bob"
    • git config --global user.email bob@...(設定が確実に再ロードされるように、コマンドラインを再起動することを忘れないでください)

それはあなたがクローンしてチェックアウトするのが良いはずだということです。

さらに詳しい情報は https://help.github.com/articles/generating-ssh-keys (@Lee Whitneyに感謝します)にあります -

ユーザーが以前に設定したssh公開/秘密鍵ペアを生成しましたか?

  • githubまたはgitlabのアカウント設定でどのキーが認証されているか確認してください
  • どの対応する秘密鍵をあなたのローカルコンピュータから関連付ける必要があるかを伝えます

eval $(ssh-agent -s)

キーがどこにあるのかを知る

ssh-add ~/.ssh/id_rsa

631
Rufinus

より広範なトラブルシューティング、さらには自動修復も、以下の方法で実行できます。

ssh -vT [email protected]

ソース: https://help.github.com/articles/error-permission-denied-publickey/ /

182
nottinhill

このエラーは、Gitの読み取り専用URLではなくSSH URL(読み取り/書き込み)にアクセスしているのに、そのリポジトリへの書き込みアクセス権がない場合に発生する可能性があります。

時にはあなただけの自分のレポをクローンしたい、例えばサーバーにデプロイします。この場合、実際にはREAD-ONLYアクセスのみが必要です。しかしそれは あなた自身の repoなので、GitHubはあなたの好みならSSH URLを表示するかもしれません。この場合、リモートホストの公開鍵がGitHub SSH鍵に含まれていないと、アクセスが拒否されます これが起こると予想されます

同等のケースは、あなたがSSH URLで書き込み権限を持っていない他人のレポジトリを複製しようとしたときです。

Wordでは、 あなたの目的がリポジトリのみを複製することを目的としている場合、HTTPS URLを使用する (不要な)公開鍵の検証を回避するSSH URL(https://github.com/{user_name}/{project_name}.git)の代わりに - ([email protected]:{user_name}/{project_name}.git)。


更新:GitHubは現在HTTPSをデフォルトのプロトコルとして表示しており、この移動によりおそらくSSH URLの誤用を減らすことができます。

145
kavinyao

Githubのヘルプ link は私がこの問題を解決するのを助けてくれました。 sshキーがssh-agentに追加されていないようです。これは私がやってしまったものです。

コマンド1:

Ssh-agentが有効になっていることを確認してください。このコマンドはバックグラウンドでssh-agentを起動します。

eval "$(ssh-agent -s)"

コマンド2:

SSHキーをssh-agentに追加します。

ssh-add ~/.ssh/id_rsa
90
jarora

同じエラー報告を受けました。

代わりにHTTPを使用することで修正されました。テスト用のPCには「SSHキー」を設定したくありません。

複製時にURLをHTTPに変更します。

git clone https://github.com/USERNAME/REPOSITORY.git

私の問題は少し違う :既存のローカルリポジトリをリモートに追加するときにURLを設定する。

git remote add Origin ssh://github.com/USERNAME/REPOSITORY.git

修正するには、URLをHTTPにリセットします。

git remote set-url Origin https://github.com/USERNAME/REPOSITORY.git

ところで、あなたはコマンドを使ってあなたのURLをチェックすることができます:

git remote -v
Origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
Origin  https://github.com/USERNAME/REPOSITORY.git (Push)

これが私のような人に役立つことを願っています。 :D

18
Robina Li

(少なくとも一部のプロジェクトでは) sshキーのgithubアカウントを持っている必要があります

認証エージェントにリストされているキーを見てください(ssh-add -l
(表示されない場合は、ssh-add/path /に/ your/keyを使用して既存のキーの1つを追加してください(例:ssh-add〜/ .ssh/id_rsa ))
(キーがない場合は、まずキーを作成してください。参照: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html または単にGoogle ssh-keygen)

あなたのgithubアカウントに関連付けられたキーがあることを確認するには

https://github.com/settings/ssh にアクセスしてください。

ほんの1分前にssh-add -lと入力したときに見たハッシュの1つと一致するハッシュキーを持つ、少なくとも1つのキーが表示されるはずです。

そうでない場合は、それを追加してからやり直してください。

18
Mason Bryant

これは私のために働く:

ssh-add ~/.ssh/id_rsa
18
Wouter Schoofs

状況が少し違っていました。リモートサーバーにログオンし、サーバー上でgitを使用していました。同じメッセージが表示されたgitコマンドを実行したとき

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

私が修正した方法は、私のMac上のファイル/ etc/ssh_configを変更することでした。から

ForwardAgent no 

ForwardAgent yes
13
Richipal

_ ssh _ _ https _ の違いは

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

そのため、私は _ https _ から _ ssh _ に変更しましたが、https://ssh://に変更しただけです。

しかし真実は:

https://github.com/USERNAME/REPOSITORY.git

[email protected]:USERNAME/REPOSITORY.git

これは私がssh://github.com/USERNAME/REPOSITORY.git[email protected]:USERNAME/REPOSITORY.gitに変更したことを意味します。

愚かなエラーが、誰かに役立つことを願っています!

12
William Hu

私は私がやったことと私はレポをクローンすることができたことと同じ問題に苦労していました。私は iMac のためにこれらの手順に従った。

最初のステップ:すでに公開SSH鍵があるかどうかを確認します。

  1. ターミナルを開きます。
  2. 既存のSSHキーが存在するかどうかを確認するには、ls -al ~/.sshを入力します。

ディレクトリのリストを調べて、公開SSHキーがすでにあるかどうかを確認します。デフォルトの公開は、次のいずれかのd_dsa.pub、id_ecdsa.pub、id_ed25519.pub、id_rsa.pubです

見つからない場合は手順2に進み、それ以外の場合は手順3に従います。

ステップ2:公開SSH鍵の生成

  1. ターミナルを開きます。
  2. Githubに使用する有効なメールアドレスを使ってfollowongコマンドを入力してくださいssh-keygen -t rsa -b 4096 -C "[email protected]"
  3. あなたは端末Generating public/private rsa key pairで次のように見えるでしょう。 to"Enter a file in which to save the key,"のプロンプトが表示されたら、Enterキーを押します。これはデフォルトのファイルの場所を受け入れます。 Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]とプロンプトが出されたら、もう一度Enterを押すだけです。プロンプトで、安全なパスフレーズを入力します。
  4. Enter same passphrase again: [Type passphrase again]再度入力したくない場合はEnter passphrase (empty for no passphrase): [Type a passphrase]を押してください

これはid_rsa.pubを生成します

ステップ3:SSHキーをssh-agentに追加する

  1. 端子間タイプeval "$(ssh-agent -s)"
  2. SSHキーをssh-agentに追加してください。新しいSSHキーを生成するのではなく既存のSSHキーを使用している場合は、コマンド内のid_rsaを既存の秘密キーファイルの名前に置き換える必要があります。このコマンドを入力してください$ ssh-add -K ~/.ssh/id_rsa

SSHキーをコピーしてgithubアカウントに追加してください。

  1. ターミナルであなたのsshファイル名でこのコマンドを入力してくださいpbcopy < ~/.ssh/id_rsa.pubこれはあなたのクリップボードにファイルをコピーするでしょう今すぐgithubアカウントを開きます 設定> SSHとGPGキー>新しいSSHキーに行きます それ。出来上がりました.
10
Zeeshan Shabbir

Windowsでは、すべてのアプリがHOMEに同意していることを確認してください。 Msysは驚くほどあなたのためにそれをしないでしょう。 sshとgitが自分の.sshディレクトリがどこにあるかについて合意できないようなので、私は環境変数を設定しなければなりませんでした。

6
Jason

あなたは 企業環境にいますか ?システム変数が最近変更された可能性はありますか? これ SO回答、sshキーは%HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pubにあります。そのため、%HOMEDRIVE%が最近変更された場合、gitはあなたの鍵を探す場所、つまりすべての認証情報を知りません。

ssh -vT [email protected]を実行してみてください。 identity fileがある場所に注意してください。私にとっては、ネットワークレベルでプッシュされる環境変数への変更のため、それはではなく私の通常の\Users\MyLoginを指すのではなくネットワークドライブを指していました。

ソリューション?私の新しい%HOMEDRIVE%は私のローカルファイルと同じパーミッションを持っているので、私はちょうど私の.sshフォルダをそこに移動し、そしてそれを1日呼んだ。

5
Andrew

みんなこれは私のために働いていた方法です:

1-端末を開いてユーザーに行く[添付の画像を見る]

2- .sshフォルダを開き、id_rsaやid_rsa.pubのようなファイルがないことを確認します

3 - git --version [gitのインストールとバージョンを確認する]

4- git config --global user.email "あなたのメールアドレス"

5- git config --global user.name "あなたの名前"

6- git config --list [自分の名前とメールアドレスを設定したことを確認してください]

7-cd〜/ .ssh

8- ssh-keygen、ファイルの保存を促し、許可する

9- cat〜/ .ssh/id_rsa.pub [あなたの公開鍵にアクセスし、その鍵をgerritの設定にコピーする]

:GitではSudoコマンドを使用しないでください。あなたがSudoを使わなければならない非常に正当な理由があるならば、あなたがすべてのコマンドでそれを使っていることを確認してください(おそらくその時点でrootとしてシェルを取得するためにsuを使うほうが良いです)。 SudoなしでSSH鍵を生成してからSudo git Pushなどのコマンドを使用しようとすると、生成したのと同じ鍵は使用されません。

enter image description here

enter image description here

5

GITの基本的な説明では、SSHの鍵については言及されていません。上記のいくつかのリンクをたどって、さまざまなオペレーティングシステムでこれを行う方法を段階的に説明したgitヘルプページを見つけました(リンクはあなたのOSを検出し、それに応じてリダイレクトします)。

http://help.github.com/set-up-git-redirect/ /

GITHubに必要なすべてを順を追って説明し、「RSAキーを作成するときにパスフレーズを追加する理由」などの詳細な説明も提供します。私はそれが他の誰かに役立つ場合に備えて、私はそれを投稿すると考えました...

5
gMale

最も簡単な方法の1つ

ターミナルへ

  git Push <Git Remote path> --all
4
Vizllx

複数のキーがある場合は、ssh-add private-keyfileを実行する必要があります。

3
kashif

Rufinusの返事に加えて、 Windows にあるあなたのSSHキーをクリップボードにコピーするための近道は:

  • type id_rsa.pub | clip

参照:

3
Jonathan

現在のプロジェクトの設定中にこの問題を経験したばかりで、上記の解決策はどれもうまくいきません。だから私はコマンドssh -vT [email protected]を使ってデバッグリストで実際に何が起こっているのか調べてみた。私の秘密鍵のファイル名がリストに載っていないことに気付きました。そのため、秘密鍵のファイル名を 'id_rsa'に変更してください。これが役立つことを願っています。

2
Rhey M.

それはとても簡単です。以下のコマンドを入力してください

ssh-keygen -t rsa -b 4096 -C "[email protected]"

SSHキーを生成します。ファイルを開き、内容をコピーしてください。 GitHub設定ページに行き、SSHキーをクリックしてください。新しいSSHキーを追加をクリックして、ここに内容を貼り付けます。それはそれです:)あなたは再び問題を見るべきではありません。

2
karthik339

現在の作業ディレクトリにパーミッション700を付与する必要があるため、このエラーが発生しました。

chmod -R 700 /home/ec2-user/
1
duhaime

メイクファイルを実行しようとすると、 Permission denied(publickey)エラー が発生していました。

上記のSSH手順の代わりに、ネイティブGitHub for Macアプリケーションをインストールすることもできます。

Mac用GitHubのダウンロード から - https://help.github.com/articles/set-up-git#platform-mac

Git hubアカウントでセットアップを完了したら(私はgit hubコマンドラインツールもインストールしましたが、このステップが必要かどうかわからない場合)、私は電子メールを受け取りました -

[GitHub]あなたのアカウントに新しい公開鍵が追加されました

そして私のエラーが修正されました。

1
WickedW

それは私のために働いた

ssh -i [your id_rsa path] -T [email protected]
1
Mr陈哲

私の場合は、ubuntuを再インストールし、ユーザー名を以前のものから変更しました。この場合、生成されたSSHキーも前のものとは異なります。

現在のssh公開鍵をリポジトリにコピーするだけで問題は解決しました。キーはあなたのユーザーの/home/.ssh/id_rsa.pubで利用可能になります

1
Sonu

私のMACでは、私はこれで解決しました:

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

どういうわけか私のgitはgithub_rsaファイルで秘密鍵を見つけるのをやめました。これは特定のレポで発生しました。他のリポジトリでもgitは正常に動作し続けていたということです。

私はそれがバグだと思います。

私はssh -vT [email protected]を実行しているこの振る舞いを見つけることができました

1
CelinHC

この奇妙なエラーは、私の場合、gnome-keyring-daemonがパスワードを必要とするキーの名前を誤って指定していたことの症状でした。

私はここで概説したステップに従い、そして端末を介してパスワードを入力しました。エラー、別名混同のGUIインターフェイスは、解決されました。参照してください: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring

1
rivanov

それは私のために働きました。

あなたの公開鍵はid_rsa.pub;ファイルに保存され、あなたがあなたのアカウントにアップロードする鍵です。これを実行して、このキーをクリップボードに保存できます。

pbcopy <〜/ .ssh/id_rsa.pub

  • sSHキーをクリップボードにコピーして、Webポータルに戻ります。
  • SSHキーフィールドに、SSHキーを貼り付けます。
  • [名前]フィールドにキーの名前を入力します。
  • 保存する 。
1

間違ったメールアドレスでSSHキーを生成したため、このエラーが発生しました。私はsshを使って接続できましたが、gitを使っていませんでした。解決策は、私のgithubアカウントのメインのメールアドレスを使って鍵を再生成することでした。

1
Charles Brunet

私は同じエラーを受けていました。私の問題はSudoで混在していました。

Git cloneコマンドの前にSudoを付けなければ、クローンを作成したディレクトリを自動的に作成できませんでした。しかしそれをしたとき、私のSSHキーは正しく参照されていません。

それを修正するために、私はそれを書くことができるように私が私のクローンを入れたい親ディレクトリにchmodを通して許可を設定しました。それから私はSudo接頭辞なしでgit cloneを走らせた。それはうまくいった!その後権限を変更しました。完了しました。

1
BuvinJ

これに対する最も簡単な解決策は、別のユーザ名でリポジトリにプッシュしようとしているときです。

 git remote set-url Origin https://[email protected]/USERNAME/PROJECTNAME.git
1
Nizar B.

私は私のubuntuシステムで以下のステップに従うことによってこの問題を克服することができました。私はシステムにパスワードなしのSSHを試していたように。

Sudo vi/etc/ssh/sshd_config

1)以下にコメントしました。#トンネルクリアテキストパスワードを無効にするにはnoに変更します。#PasswordAuthentication yes PasswordAuthentication no ---->これをコメントしました。

2)次に、以下のようにsshdデーモンを再起動しました。

service sshd restart

0
lambzee

Macの場合:

  1. ユーザー切り替え(Sudo su - jenkins)
  2. 鍵を生成します(ssh-keygen -t rsa -b 4096 -C "username")。ユーザー名はあなたがjenkinsで使っているものです。
  3. 生成された公開鍵(cat〜/ .ssh/id_rsa.pub)をコピーします。
  4. Gitアカウントにキーを貼り付けます。 ([設定] - > [SSH]および[CPGキー] - > [新しいsshキー] - >キーの名前を入力し(任意でもかまいません)、説明にキーを貼り付けます)。
0
Abhishek Bais

まず第一に、私はいくつかの標準的なものをチェックすることをお勧めします:

  • 正しいユーザーとしてログインします あなたのシステムでは、
  • 正しい秘密鍵を正しい場所に置く あなたのシステムでは、
  • 正しい username hostname 、および port で接続してみてください。
  • 正しい場所に(そして正しいユーザーに)公開鍵を持っている 外部サーバーにある
  • sshサービスを再開しました あなたのコンピュータで:
 service ssh restart 

私には十分でした。

0
simhumileco
$ cd ~
$ cd .ssh
$ chmod 400 id_rsa
0
539f

Githubのsshリンクを使用してください。ただし、sshを追加しないように注意してください。単にgit hubのsshタブでリポジトリのクローンを作成してください。

0
pal4life

私の経験も共有しましょう

私はアカウント設定で私の公開鍵を入手したGerritリポジトリからいくつかのプロジェクトを複製しようとしていました。

git cloneを最初に作成しようとしたときに、次のエラーが発生しました。

Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1

私はSSHオプション-oKexAlgorithms=+diffie-hellman-group1-sha1をどうにかしてgit cloneに渡す必要があることを私は考えました。

うまくいけばGIT_SSH_COMMAND環境変数は仕事をしました:

export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"

しかしgit cloneはまだ動き始めませんでした..今それは(トピックについての)投げます:

Permission denied (publickey).

私はすでにSSH鍵を手に入れたので、それらを再生成したくありませんでした。私はホストへのプレーンなSSH接続をチェックしました、そしてそれは大丈夫でした:

****    Welcome to Gerrit Code Review    ****

  Hi XXXXX, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://[email protected]:xxx/REPOSITORY_NAME.git

少し混乱しました。私はもう一度始めて-vvvオプションでSSHのデバッグをオンにしました。そして私は次のことを見ました:

debug1: read_passphrase: can't open /dev/tty: No such device or address

おそらく、それはGIT_SSH_COMMAND env変数のオーバーヘッドでした - 私の鍵はパスフレーズで保護されていました(そして私がgitリポジトリHostへのログインをチェックしていたときにそれを入力しました)。

それで、私はその時にこのフレーズを取り除くことにしました。簡単なコマンドは私を助けました:

ssh-keygen -p

それから私は「古いパスフレーズ」のために私のパスフレーズを入力し、そしてちょうどヒットした ENTER それを空のままにするために、すなわち全くパスフレーズなしで、そして私の選択を確認するために「新しいパスフレーズ」で2回。

その後、クローンを作成したばかりのリポジトリをローカルディスクに作成しました。

0
rook

Adminとして端末を実行してください。

端末があなたの.sshを見ることができないならば、それはそのエラーを返します。

0
Raul Barros