誰もがこのエラーを見て何をすべきか知っていますか?
私はターミナルを使用しています、私はルートにいます、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.
GitHubはあなたを認証することができません。ですから、あなたがSSHキーを使って設定していないのは、あなたが あなたのマシンに設定する を持っていないか、あなたのキーがあなたのGitHubアカウントに関連付けられていないからです。
SSH鍵を処理しなくても済むように、SSH/git URLの代わりにHTTPS URLを使用することもできます。これは GitHubの推奨方法 です。
さらに、GitHubには 特にそのエラーメッセージのヘルプページ があり、あなたがチェックできることすべてをより詳細に説明しています。
〜/ .sshディレクトリに config ファイルを作成しましたか?内容は次のようになります。
Host github.com
IdentityFile ~/.ssh/github_rsa
github_rsa という名前のsshキーを作成したとします。
そしてGitHubにアップロードしました...
注:〜/ .ssh /ディレクトリに複数のキー(2つ以上)がある場合は、この明示的な設定方法に従う必要があります。この方法でkeyを指定しない場合は、最初のキーが順番にgithub認証に使用されるので、そのときはキーファイル名に依存します。
SSHキーを作成し(持っていない場合)、公開キーをGithubアカウントに関連付ける必要があります。 Github自身のドキュメント を参照してください。
私はこの問題を知っています。 sshキーを追加したら、sshエージェントにもsshキーを追加してください(oficial docs https://help.github.com/articles/generating-ssh-keys/ から)
ssh-agent -s
ssh-add ~/.ssh/id_rsa
それが終わったら、すべてうまくいき、gitは適切なキーを見ることができます。
これは私に起こりました。どういうわけか私の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を確認および設定することもできます。
まず、私たちはあなたのコンピュータに存在する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アカウントまたはリポジトリがなんらかの理由でめちゃくちゃになったので、以前に生成した公開鍵を「リンク」する必要がありました)
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鍵の生成 。
このエラーが出ました。 OSXをSierraにアップグレードしたばかりで、古いキーはもう登録されていません。
最初は "macOS SierraへのアップグレードはあなたのSSH鍵を壊してあなた自身のサーバーからあなたを締め出すでしょう" と思った
しかし私はそれを回避しました。実は私は自分の既存の鍵を再登録しなければならなかったのです。
ssh-add -K
そしてパスフレーズを入力してください...これで完了です。
自分のリポジトリにアクセスしていない場合、またはクローンリポジトリ内でクローンを作成している場合( "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がリポジトリページの上部に表示されています。
ssh-add -l
があなたのGithubアカウントのSSHキーのリストにあるSSHキーの指紋を示すことを確認してください。
出力が空で、githubアカウントで動作するプライベートSSHキーがあることがわかっている場合は、このキーに対してssh-add
を実行します(~/.ssh
にあります。デフォルトではid_rsa
という名前になるので、おそらくssh-add id_rsa
を実行します)。
そうでなければ、 これらの指示に従ってください SSH鍵ペアを生成する。
これは私のために働いた:
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
それはすべての人です!
他の解決策:
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)の下にあなたの公開鍵を追加してください。
私は私のPHPプロジェクトのいずれかの以前のgithubのを使用していました。 githubのを使用している間、私は、sshの代わりにHTTPSを使用していました。私は machine setup をそのようにしていて、私がコードをコミットしたりプッシュしたりするたびに、rsaキーのパスワードを聞いてくるでしょう。
数日後、私はPHPのプロジェクトに取り組んで停止し、私のRSAパスワードを忘れてしまいました。最近、私はJavaプロジェクトに取り組んで始めたとのBitbucketに移動しました。私はパスワードを忘れたので それを復元する方法はありません _があると思いますので、私は新しいプロジェクトにhttps(推奨)プロトコルを使用することにしました。
どうやって解決したの?
SSHの代わりにhttpsを使用するために私のgitを伝えるために、このコマンドを実行しました:
git config --global url."https://".insteadOf git://
もしあれば任意のリモートを削除します
git remote rm Origin
git initからgit Pushまでのすべてをやり直してください。
PS:私はまた、アンインストールし、それが問題を修正する削除する、ということを考えて、デバッグプロセス中に私のマシンからのssh。はい、知っています!! :)
私はあなたに最高の答えがあると思います、あなたの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アカウントのキーをコピーしてください。それは私のために働いた。あなたはそれを試すことができます。
Sshアクセスをリモートリポジトリへのhttpsアクセスに変更すると解決する問題:
git remote set-url Origin https_link_to_repository
git Push -u Origin master
SSHキーをすでに作成していてもエラーが発生しているのであれば、クローンを作成しているフォルダに対して読み書きするためのアクセス許可をユーザーに付与する必要があるためです。これを行うには、Sudo chmod 777 <your_folder_name_here>"
です。もちろん、これはSSHキーを生成した後で、まだこのエラーが発生しています。これが将来のユーザーに役立つことを願っています。
編集
これに追加するには、git bashを使用している場合はWindowsのadminを使用します。
私の調査結果のいくつかを追加したいと思います。
GitBash
を使用している場合は、SSHキーが~/.ssh/id_rsa
に格納されていることを確認してください。
デフォルトではGitBash
はSSHキーのデフォルトパスとして~/.ssh/id_rsa
を検索します。
ファイル名id_rsa
でさえも重要です。 SSHキーを別のファイル名またはパスに保存すると、Permission Denied(publickey)
エラーが発生します。
私は最近同じ問題を抱えていました。これはすぐに修正が必要な場合に役立ちますが、システムを再起動するたびに修正する必要があります。
端末から、ssh-add ~/.ssh/id_rsa
を実行します。
システムパスワードを入力すればうまくいきます。
私は@バットマンと同様の問題を抱えていました。ただし、これを/ usr/local/src/projectnameの下で実行していたため、Sudoなしで実行することはできませんでした。
環境を保護するために -Eフラグ を追加するだけです(〜/ .ssh /パス)。
$ Sudo -E git clone git@your_repo
男須藤から:
-E、 - preserve-envユーザーが既存の環境変数を保持したいことをセキュリティポリシーに示します。ユーザが環境保護の許可を得ていない場合、セキュリティポリシーはエラーを返す可能性があります。
Ubuntuでも、BitBucketの設定にSSHキーがすでに入力されていたとしても、この問題が発生しました。その理由は、私が次のことを試みていたことです。
Sudo git Push Origin master
理由はわかりませんが、それを使用して解決しました
git Push Origin master
Sudoは使用されていません。
一度これが起こるシナリオは、リポジトリを作成した後にGitHubの指示に従うときです。 Gitはあなたにこのようなものを使ってリモコンを追加するように指示します。
git remote add Origin [email protected]:<user>/<project>.git
<>の内容を自分のアカウントに関連する値に置き換えます。
解決策は.git
サフィックスを削除することです。次のようにリモコンを追加します。
git remote add Origin [email protected]:<user>/<project>
GitHub for MacのUIを使用している場合は、設定をチェックしてログインしていることを確認してください。
あなたはログインするのにHttps URLを使うことができます
私はあなたがそれが唯一のパスワードを尋ねるようにあなたがHTTP URLを使用しているssh.betterを介して接続していると考えるならばgitプッシュを言うときあなたはssh urlでログインしようとしていると思います。
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に修正することができます。
これにはいくつかの解決策があります、それらのうちのいくつかはすでに言及されているかもしれませんが、それらをまとめておくためだけに:
あなたのキーが存在することを確認してください、デフォルトでは別の〜/ .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
'git Push'中に同じエラーが出ました。クライアントサイドには2つのOriginとmasterがありました。私はそれを取り除いた、そしてそれはうまくいった。
あなたのGitHubアカウントダッシュボードに行き、あなたのプロジェクトリポジトリを見つけ、 設定 タブ - キーのデプロイ - の順にクリックしてください SSHキーを追加する必要があります。ターミナルを開き、次のように入力します。
cat ~/.ssh/id_rsa.pub | pbcopy
これはあなたのid_rsa.pubファイルからキーをコピーします。 GitHubダッシュボードに戻って貼り付け、 キーの追加 をクリックするだけです。
同じ解決方法がBitbucketアカウントにも当てはまります。
Httpsを使用しても問題ありません。git config --global credential.helper wincred
を実行して、あなたの認証情報を格納するGithub認証情報ヘルパーを作成してください。これでうまくいかない場合は、.git
ディレクトリにあるconfig
ファイルを編集してOriginをhttps URLに更新する必要があります。
Githubのドキュメントについては このリンク を参照してください。
私はこれを試してみました -
eval "$(ssh-agent -s)"
それから私は走る
ssh-add ~/.ssh/path-to-the-keyfile
実行できる鍵を生成するために
ssh-keygen -t rsa -b 4096 -C "[email protected]"
これにより鍵のペア(公開鍵と秘密鍵)が生成されます。
このキーをgithubに保存してもっと読むことができます GitHubアカウントに新しいSSHキーを追加する
私はそれが他の人を助けることを願っています:)
私は2つのGithub IDファイルをsshエージェントにロードしました。私の個人的な鍵とクライアントプロジェクトのための別の鍵。
混乱を引き起こしていたキーを削除しました。
ssh-add -d id_rsa_github_somekey
あなたのssh-agentが有効になっていないのかもしれません
それをインストール
Ssh-agentを有効にする
C:\ Program Files\Git\cmd
start-ssh-agent
GitHubをリモートとして追加するときは、このページのURLを使用してください。それはそのようなエラーを引き起こさないし、コードをプッシュする
リモートホストで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セッションでそれを転送します。 詳細はこちらをご覧ください