web-dev-qa-db-ja.com

GitHubエラーメッセージ - 許可が拒否されました(公開鍵)

誰もがこのエラーを見て何をすべきか知っていますか?

私はターミナルを使用しています、私はルートにいます、GitHubレポジトリは存在します、そして今何をするべきかわかりません。

> git Push -u Origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

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

GitHubはあなたを認証することができません。ですから、あなたがSSHキーを使って設定していないのは、あなたが あなたのマシンに設定する を持っていないか、あなたのキーがあなたのGitHubアカウントに関連付けられていないからです。

SSH鍵を処理しなくても済むように、SSH/git URLの代わりにHTTPS URLを使用することもできます。これは GitHubの推奨方法 です。

さらに、GitHubには 特にそのエラーメッセージのヘルプページ があり、あなたがチェックできることすべてをより詳細に説明しています。

622
bdukes

〜/ .sshディレクトリに config ファイルを作成しましたか?内容は次のようになります。

Host github.com 
 IdentityFile ~/.ssh/github_rsa

github_rsa という名前のsshキーを作成したとします。

そしてGitHubにアップロードしました...

注:〜/ .ssh /ディレクトリに複数のキー(2つ以上)がある場合は、この明示的な設定方法に従う必要があります。この方法でkeyを指定しない場合は、最初のキーが順番にgithub認証に使用されるので、そのときはキーファイル名に依存します。

64
IgorGanapolsky

SSHキーを作成し(持っていない場合)、公開キーをGithubアカウントに関連付ける必要があります。 Github自身のドキュメント を参照してください。

57
cdhowie

私はこの問題を知っています。 sshキーを追加したら、sshエージェントにもsshキーを追加してください(oficial docs https://help.github.com/articles/generating-ssh-keys/ から)

ssh-agent -s
ssh-add ~/.ssh/id_rsa

それが終わったら、すべてうまくいき、gitは適切なキーを見ることができます。

53

これは私に起こりました。どういうわけか私のOriginは気付かずにめちゃくちゃになってしまいました。

設定がまだ正しいかどうか確認してください

git remote -v

uRLはssh://[email protected]/YourDirectory/YourProject.gitのようにする必要があります。 [email protected]が表示されない場合は、

git remote set-url Origin git://github.com/YourDirectory/YourProject.git

正しく設定するあるいは、githubアプリを使用して、特定のリポジトリの設定パネルでプライマリリモートリポジトリのURLを確認および設定することもできます。

48
rmundo

まず、私たちはあなたのコンピュータに存在するSSHキーをチェックする必要があります。ターミナルを開いて実行します。

ls -al ~/.ssh

#or

cd ~/.ssh
ls

これにより、.sshディレクトリ内のファイルが一覧表示されます。

そして最後にあなたが見るものによります(私の場合はそうでした):

 github_rsa  github_rsa.pub known_hosts

RSAを設定してみてください。うまくいけば、 "git Push Origin"の問題を解決できます。

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

注: RSA証明書は鍵ペアになっているので、プライベートとパブリックの証明書があります。githubに属しているのでプライベートにアクセスすることはできません(この場合)。このエラーが発生したとき(少なくとも私の場合はgithubアカウントまたはリポジトリがなんらかの理由でめちゃくちゃになったので、以前に生成した公開鍵を「リンク」する必要がありました)

19
d1jhoni1b

SSH経由でGitHubに接続していると仮定すると、これを確認するために以下のコマンドを実行できます。

$git config --get remote.Origin.url

結果が[email protected]:xxx/xxx.github.com.gitの形式になっている場合は、次のようにしてください。

SSHキーを生成します(または既存のものを使用します)。持っていれば、あなたの鍵をssh-agent(step 2)とGitHubアカウント(step 3)に追加するだけです。

以下はSSHキーを持っていない人のためのものです。

ステップ1 公開/秘密のrsa鍵ペアを生成します。

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

SSHキーを保存する場所と使用するパスフレーズを確認するように求められます。

ステップ2 ssh-agentにあなたの鍵を追加する

  • Ssh-agentが有効になっていることを確認してください。

    $eval "$(ssh-agent -s)"

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

    $ssh-add ~/.ssh/id_rsa

ステップ3 あなたのSSHキーをあなたのアカウントに追加する

$Sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

次にコピーしたキーをGitHubに追加します

設定 - > SSHキー (個人設定サイドバー) - > SSHキーの追加 - >フォームに記入(キーはクリップボードにあります。 ctrl + v) - > キーを追加する

上記の手順を実行した後、あなたは許可の問題を解決する必要があります。

参照リンク: SSH鍵の生成

18
xinerd

このエラーが出ました。 OSXをSierraにアップグレードしたばかりで、古いキーはもう登録されていません。

最初は "macOS SierraへのアップグレードはあなたのSSH鍵を壊してあなた自身のサーバーからあなたを締め出すでしょう" と思った

しかし私はそれを回避しました。実は私は自分の既存の鍵を再登録しなければならなかったのです。

ssh-add -K

そしてパスフレーズを入力してください...これで完了です。

14
jfunk

自分のリポジトリにアクセスしていない場合、またはクローンリポジトリ内でクローンを作成している場合( "git submodule ..."コマンドを使用):

リポジトリのホームディレクトリにあります。

$ ls -a

1. ".gitmodules"を開きます。 すると、次のようになります。

[submodule "XXX"]
    path = XXX
    url = [email protected]:YYY/XXX.git

最後の行を、プルする必要があるリポジトリの _ https _ に変更します。

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

".gitmodules" 、および run サブモジュール用のコマンドを保存すると、 "。git"が更新されます。

2. ".git"を開き、 "config"ファイルに移動すると、次のようになります。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "Origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
    remote = Origin
    merge = refs/heads/master
[submodule "XXX"]
    url = [email protected]:YYY/XXX.git

最後の行を、プルする必要があるリポジトリの _ https _ に変更します。

    url = https://github.com/YYY/XXX.git

だから、この場合、主な問題は単にURLにあります。任意のリポジトリのHTTPSがリポジトリページの上部に表示されています。

8
N. Osil

ssh-add -lがあなたのGithubアカウントのSSHキーのリストにあるSSHキーの指紋を示すことを確認してください。

出力が空で、githubアカウントで動作するプライベートSSHキーがあることがわかっている場合は、このキーに対してssh-addを実行します(~/.sshにあります。デフォルトではid_rsaという名前になるので、おそらくssh-add id_rsaを実行します)。

そうでなければ、 これらの指示に従ってください SSH鍵ペアを生成する。

8
Rose Perrone

これは私のために働いた:

1 - すべての起源を削除

git remote rm Origin  

(cf. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html

* remote: "ブランチを追跡しているリポジトリのセット("リモート ")を管理します。

"* rm:"指定されたリモートを削除します。すべてのリモート追跡ブランチとそのリモートの設定が削除されます。

2-すべてが削除されたことを確認します。

git remote -v  

3-新しいOriginマスターを追加

git remote add Origin [email protected]:YOUR-GIT/YOUR-REPO.git

それはすべての人です!

7
marcdahan

他の解決策:

sSHキーを作成するには、ssh-keygen -t rsa -C "[email protected]"と入力します。これにより、id_rsaファイルとid_rsa.pubファイルの両方が作成されます。

ローカルコンピュータのsshリストにid_rsaを追加します。ssh-add ~/.ssh/id_rsa.

鍵を生成したら、次のコマンドを使用して公開鍵を取得します。

cat ~/.ssh/id_rsa.pub 

次のようになります。

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1Gd2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== [email protected]

この鍵(値)をコピーしてgithub.comに行き、設定(sshとpgp key)の下にあなたの公開鍵を追加してください。

7
Badr Bellaj

私は私のPHPプロジェクトのいずれかの以前のgithubのを使用していました。 githubのを使用している間、私は、sshの代わりにHTTPSを使用していました。私は machine setup をそのようにしていて、私がコードをコミットしたりプッシュしたりするたびに、rsaキーのパスワードを聞いてくるでしょう。

数日後、私はPHPのプロジェクトに取り組んで停止し、私のRSAパスワードを忘れてしまいました。最近、私はJavaプロジェクトに取り組んで始めたとのBitbucketに移動しました。私はパスワードを忘れたので それを復元する方法はありません _があると思いますので、私は新しいプロジェクトにhttps(推奨)プロトコルを使用することにしました。

どうやって解決したの?

  1. SSHの代わりにhttpsを使用するために私のgitを伝えるために、このコマンドを実行しました:

    git config --global url."https://".insteadOf git://
    
  2. もしあれば任意のリモートを削除します

    git remote rm Origin
    
  3. git initからgit Pushまでのすべてをやり直してください。

PS:私はまた、アンインストールし、それが問題を修正する削除する、ということを考えて、デバッグプロセス中に私のマシンからのssh。はい、知っています!! :)

6
3AK

私はあなたに最高の答えがあると思います、あなたのgitアプリはrootユーザーディレクトリにあるあなたのid_rsa.pubを読みます

/home/root/.ssh/id_rsa.pub

そのため、/ home/your_username/.ssh/id_rsa.pub内のあなたの鍵がgitで読めないのです。そのため、/ home/root/.ssh /にキーを作成する必要があります。

$ Sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

それからgithubアカウントのキーをコピーしてください。それは私のために働いた。あなたはそれを試すことができます。

5
digembok

Sshアクセスをリモートリポジトリへのhttpsアクセスに変更すると解決する問題:

git remote set-url Origin https_link_to_repository

git Push -u Origin master
4
george mano

SSHキーをすでに作成していてもエラーが発生しているのであれば、クローンを作成しているフォルダに対して読み書きするためのアクセス許可をユーザーに付与する必要があるためです。これを行うには、Sudo chmod 777 <your_folder_name_here>"です。もちろん、これはSSHキーを生成した後で、まだこのエラーが発生しています。これが将来のユーザーに役立つことを願っています。

編集

これに追加するには、git bashを使用している場合はWindowsのadminを使用します。

4
Kevin

私の調査結果のいくつかを追加したいと思います。

GitBashを使用している場合は、SSHキーが~/.ssh/id_rsaに格納されていることを確認してください。

デフォルトではGitBashはSSHキーのデフォルトパスとして~/.ssh/id_rsaを検索します。

ファイル名id_rsaでさえも重要です。 SSHキーを別のファイル名またはパスに保存すると、Permission Denied(publickey)エラーが発生します。

3
vinaykumar2491

私は最近同じ問題を抱えていました。これはすぐに修正が必要な場合に役立ちますが、システムを再起動するたびに修正する必要があります。

端末から、ssh-add ~/.ssh/id_rsaを実行します。

システムパスワードを入力すればうまくいきます。

3
user7506706

私は@バットマンと同様の問題を抱えていました。ただし、これを/ usr/local/src/projectnameの下で実行していたため、Sudoなしで実行することはできませんでした。

環境を保護するために -Eフラグ を追加するだけです(〜/ .ssh /パス)。

$ Sudo -E git clone git@your_repo

男須藤から:

-E、 - preserve-envユーザーが既存の環境変数を保持したいことをセキュリティポリシーに示します。ユーザが環境保護の許可を得ていない場合、セキュリティポリシーはエラーを返す可能性があります。

1
justin

Ubuntuでも、BitBucketの設定にSSHキーがすでに入力されていたとしても、この問題が発生しました。その理由は、私が次のことを試みていたことです。

Sudo git Push Origin master

理由はわかりませんが、それを使用して解決しました

git Push Origin master

Sudoは使用されていません。

1
Nabin

一度これが起こるシナリオは、リポジトリを作成した後にGitHubの指示に従うときです。 Gitはあなたにこのようなものを使ってリモコンを追加するように指示します。

git remote add Origin [email protected]:<user>/<project>.git

<>の内容を自分のアカウントに関連する値に置き換えます。

解決策は.gitサフィックスを削除することです。次のようにリモコンを追加します。

git remote add Origin [email protected]:<user>/<project>

1
Litehouse

GitHub for MacのUIを使用している場合は、設定をチェックしてログインしていることを確認してください。

1
juliarm

あなたはログインするのにHttps URLを使うことができます

私はあなたがそれが唯一のパスワードを尋ねるようにあなたがHTTP URLを使用しているssh.betterを介して接続していると考えるならばgitプッシュを言うときあなたはssh urlでログインしようとしていると思います。

1
venkat razesh

tl; dr

~/.ssh/configに置く

PubkeyAcceptedKeyTypes=+ssh-dss

シナリオ あなたがopenSSH> 7のバージョンを使っているなら、例えばMacBook Proのタッチバーで言うとssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0
です。

あなたがあなたの鍵をGithubに置いた古いMacも持っていました、それはid_dsa鍵を使っている可能性があります。 OpenSSH v7では、デフォルトでこれらのDSAキーの使用(これにはssh-dssが含まれています)を使用していませんが、~/.ssh/configに次のコードを追加して追加することができます。

PubkeyAcceptedKeyTypes=+ssh-dss

私のために働いた情報源はこれです Gentooニュースレター

これで、少なくともGitHubを使用してから鍵をRSAに修正することができます。

1
pjammer

これにはいくつかの解決策があります、それらのうちのいくつかはすでに言及されているかもしれませんが、それらをまとめておくためだけに:

  • あなたのキーが存在することを確認してください、デフォルトでは別の〜/ .ssh /フォルダ、すなわちid.rsaとid.rsa.pub

  • キーに正しい権限があることを確認してください。chmodを実行できます。

    chmod 600〜/ .ssh/id_rsa

    chmod 644〜/ .ssh/id_rsa.pub

  • あなたの公開鍵(id_rsa.pub)の内容がリモートリポジトリ設定でアップロードされたものと一致することを確認してください

  • 最後にsshエージェントの問題を修正してください: ssh-add

いくつかのより多くの情報: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html

1
xproph

'git Push'中に同じエラーが出ました。クライアントサイドには2つのOriginとmasterがありました。私はそれを取り除いた、そしてそれはうまくいった。

1
Pabitra Dash

あなたのGitHubアカウントダッシュボードに行き、あなたのプロジェクトリポジトリを見つけ、 設定 タブ - キーのデプロイ - の順にクリックしてください SSHキーを追加する必要があります。ターミナルを開き、次のように入力します。

cat ~/.ssh/id_rsa.pub | pbcopy 

これはあなたのid_rsa.pubファイルからキーをコピーします。 GitHubダッシュボードに戻って貼り付け、 キーの追加 をクリックするだけです。

同じ解決方法がBitbucketアカウントにも当てはまります。

0
ajlaracast

Httpsを使用しても問題ありません。git config --global credential.helper wincredを実行して、あなたの認証情報を格納するGithub認証情報ヘルパーを作成してください。これでうまくいかない場合は、.gitディレクトリにあるconfigファイルを編集してOriginをhttps URLに更新する必要があります。

Githubのドキュメントについては このリンク を参照してください。

0
Ryan Walker

私はこれを試してみました -

eval "$(ssh-agent -s)"

それから私は走る

ssh-add ~/.ssh/path-to-the-keyfile

実行できる鍵を生成するために

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

これにより鍵のペア(公開鍵と秘密鍵)が生成されます。

このキーをgithubに保存してもっと読むことができます GitHubアカウントに新しいSSHキーを追加する

私はそれが他の人を助けることを願っています:)

0
Joomler

私は2つのGithub IDファイルをsshエージェントにロードしました。私の個人的な鍵とクライアントプロジェクトのための別の鍵。

混乱を引き起こしていたキーを削除しました。

ssh-add -d id_rsa_github_somekey

0
Alex Aguilar

あなたのssh-agentが有効になっていないのかもしれません

  1. Gitをダウンロード

http://git-scm.com/

  1. それをインストール

  2. Ssh-agentを有効にする

C:\ Program Files\Git\cmd

start-ssh-agent

0
徐啟倫

GitHubをリモートとして追加するときは、このページのURLを使用してください。それはそのようなエラーを引き起こさないし、コードをプッシュする

0
user9283073

リモートホストでgit pullを使用して同様のエラーメッセージの解決策を探しているときにこのページを見つけました。

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

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

私はssh -AY remote_hostnameを経由して私のローカルマシンからリモートのHostに接続しました。これはOPの質問に対する解決策ではありませんが、このページに出くわす他の人にとって有用なので、ここに投稿してください。

私の場合、git pullは私のローカルマシンではうまく動作します(つまり、sshキーが設定され、GitHubアカウントに追加されたなど)。私はこれを私のラップトップの~/.ssh/configに追加することによって私の問題を解決しました:

Host *
     ForwardAgent yes

それから私はssh -AY remote_hostnameでリモートホストに再接続しました、そして今git pullは働きました。設定の変更は私のsshキーペアを私のローカルマシンから任意のホストに転送することを可能にします。 sshへの-Aオプションは、実際にはそのsshセッションでそれを転送します。 詳細はこちらをご覧ください

0
Timur Shtatland