web-dev-qa-db-ja.com

BitbucketのGitリポジトリにプッシュできません

新しいリポジトリを作成しましたが、奇妙なエラーが発生しています。以前にBitbucketでGitを使用したことがありますが、再フォーマットしたばかりで、Gitを動作させることができません。コミットを行った後、グローバルに電子メールと名前を追加する必要がありましたが、その後正常にコミットされました。

コマンドを使用しようとすると

git Push Origin master

機能しません。私はこのメッセージを受け取ります:

$ git Push 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.

私はここで迷っています。このリポジトリを共有している友人は、うまくアクセスし、うまくプッシュしましたが、うまくいかないようです。

132
Jason Dahl

WindowsでGitとBitBucketを使い始めたばかりで、Bashに慣れていない人のためにこれを書いてください(これは一般的な問題であり、質問内のエラーメッセージを検索する際のGoogleの上位結果だからです)。

HTTPSを気にせず、簡単な修正を探している場合は、FOR THE LAZYの下の手順について、この回答の一番下までスクロールしてください

実際の問題を解決したい方は、以下の手順に従ってください:

SSHの問題をできるだけ早く修正する

これは、VonCによってリンクされたURLから派生した一連の命令です。弾力性のある簡潔なものになるように修正されました。

  • $または$で始まらない行を入力しないでください($は、これがGitBashに入力するものであることを意味します)。

  • GitBashを開く

グローバル情報を設定していない場合:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

OpenSSHを確認します。

$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...

そのようなものを参照してください?

  • はい:続行します。
  • いいえ:FOR THE LAZYセクションにスキップするか、VonCのリンクされた記事に従います。

キーがすでに生成されているかどうかを確認します。

$ ls -a ~/.ssh/id_*

ファイルが2つある場合は、次の手順をスキップできます。

$ ssh-keygen

すべてをデフォルトのままにして、パスフレーズを入力します。次のコマンドで結果が表示されるはずです。

$ ls -a ~/.ssh/id_*

既存の構成ファイルを確認します。

$ ls -a ~/.ssh/config

結果が得られた場合は、このファイルでエラー情報を確認してください。ファイルが存在しない場合は、次を実行します。

$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config

内容を確認します。

$ cat ~/.ssh/config

Host bitbucket.org
 IdentityFile ~/.ssh/id_rsa
  • 「IdentityFile」の前の単一スペースが必要です。

GitBashを実行するたびにSSHエージェントを起動していることを確認します。

$ cat ~/.bashrc
  • start_agentという関数が表示される場合、この手順は既に完了しています。
  • ファイルがない場合は、続行します。
  • この関数を含まないファイルがある場合、あなたはスティッキーな状況にいます。 (以下の手順を使用して)追加するのはおそらく安全ですが、そうでない場合もあります!不明な場合は、以下の手順に従う前に.bashrcのバックアップを作成するか、FOR THE LAZYセクションに進んでください。

以下をGitBashに入力して、.bashrcファイルを作成します。

$ echo "SSH_ENV=$HOME/.ssh/environment" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "# start the ssh-agent" >> ~/.bashrc
$ echo "function start_agent {" >> ~/.bashrc
$ echo "    echo \"Initializing new SSH agent...\"" >> ~/.bashrc
$ echo "    # spawn ssh-agent" >> ~/.bashrc
$ echo "    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    echo succeeded" >> ~/.bashrc
$ echo "    chmod 600 \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "    /usr/bin/ssh-add" >> ~/.bashrc
$ echo "}" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "if [ -f \"\${SSH_ENV}\" ]; then" >> ~/.bashrc
$ echo "     . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "     ps -ef | grep \${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {" >> ~/.bashrc
$ echo "        start_agent;" >> ~/.bashrc
$ echo "    }" >> ~/.bashrc
$ echo "else" >> ~/.bashrc
$ echo "    start_agent;" >> ~/.bashrc
$ echo "fi" >> ~/.bashrc

ファイルが正常に作成されたことを確認します(「yourusername」が表示される場所のみが異なる必要があります)。

$ cat ~/.bashrc
SSH_ENV=/c/Users/yourusername/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  • GitBashを閉じて、再度開きます。
  • パスフレーズ(以前に生成したSSHファイル用)を求められるはずです。
  • プロンプトが表示されない場合は、パスフレーズを設定していないか、GitBashが.bashrcスクリプトを実行していません(これは奇妙なので、その内容を確認することを検討してください!)。これをMac(OS X)で実行している場合、デフォルトでは.bashrcは実行されません-.bash_profileが実行されます。これを修正するには、次のスニペットを.bash_profileに入れます:[[ -s ~/.bashrc ]] && source ~/.bashrc

パスフレーズを入力しなかった場合、GitBashの起動時に次のように表示されます。

Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)

そして、以下は結果を返すはずです:

$ ssh-add -l

ただし、ssh-add -lから次を取得する場合:

Could not open a connection to your authentication agent.

SSHエージェントは生成されず、おそらく.bashrcが原因です。

GitBashの起動時に次のように表示される場合:

Initializing new SSH agent...
sh.exe": : No such file or directory

これは、ファイルにエコーするときに、変数を展開するときに\で$をエスケープするのを忘れたことを意味します。これを解決するには、.bashrcを再作成します。

エージェントが実行されており、キーが追加されていることを確認します。

$ ssh-add -l

これに類似した何かを返す必要があります:

2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)

次のコマンドを実行して、公開キーを取得します。

$ cat ~/.ssh/id_rsa.pub

(「ssh-rsa ......」で始まるものを返す必要があります

  • GitBashウィンドウアイコンをクリックします
  • 編集をクリックします
  • マークをクリック
  • マウスを使用して公開キーを強調表示します(先頭のssh-rsaビットと末尾の== [email protected]ビットを含む)
  • ウィンドウを右クリック(コピーを実行)
  • 公開鍵をメモ帳に貼り付けます。
  • 1行のみになるように、すべての改行を削除します。
  • CTRL+Aを押してからCTRL+Cを押して、公開鍵をクリップボードに再度コピーします。

次の手順を実行して、BitBucketで秘密鍵を構成します。

  • ブラウザを開いて、 BitBucket.org サイトに移動します
  • BitBucket.org にログインします
  • アバターをクリックします(右上)
  • [アカウントの管理]をクリックします
  • SSHキー(左側のメニューの[セキュリティ]の下)をクリックします。
  • キーの追加をクリックします
  • ラベルにGlobal Public Keyと入力します
  • メモ帳からコピーした公開キーを貼り付けます

これで、Global Public Keyエントリがキーのリストに表示されます。

  • GitBashに戻る
  • プロジェクトを含むディレクトリに移動します
  • OriginをSSHバリエーションに変更します(FOR THE LAZYステップを実行した場合はそうではありません)

リモコンを確認します。

$ git remote -v

SSH URLに切り替えます。

$ git remote set-url Origin [email protected]:youraccount/yourproject.git

物事が正常に機能していることを確認します

$ git remote show Origin

次のようなものが表示されるはずです。

Warning: Permanently added the RSA Host key for IP address '...' to the list of known hosts.
* remote Origin
  Fetch URL: [email protected]:youruser/yourproject.git
  Push  URL: [email protected]:youruser/yourproject.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git Push':
    master pushes to master (fast-forwardable)

完了!

SSHの代わりにHTTPSを使用することを選択できます。リモート操作中にパスワードを入力する必要があります(一度入力すると、一時的にキャッシュされます)。 HTTPSを構成する方法は次のとおりです。

レイジーの場合

VonCの説明に従ってSSHの問題を修正する必要があります。ただし、あなたがコミットするラッシュにいて、新しい公開鍵を生成するtools/time/knowledgeを持っていない場合今すぐ、OriginをHTTPSの代替:

> https://[email protected]/accountname/reponame.git

TortoiseGitcommand line tools などのGUIツールを使用します。

この代替Origin URLのドキュメントがあります。

Originが存在しない場合にOriginを追加するコマンドライン:

git remote add Origin https://[email protected]/accountname/reponame.git

既存のOriginを変更するコマンドライン:

git remote set-url Origin https://[email protected]/accountname/reponame.git

注:アカウント名はメールではありません。

グローバル情報を設定することもできます。

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

その後、もう一度プッシュを試してください(再度コミットする必要はありません)

git Push Origin master
219
Graeme Wicksted

このエラーは、秘密鍵を ssh-agent に追加し忘れた場合にも発生します。でこれを行います:

ssh-add ~/.ssh/id_rsa
55
Matthias Braun

再フォーマットされたとは、おそらく公開および非公開のsshキー(〜/ .ssh内)を削除したことを意味します。

BitbucketでSSHプロトコルを使用する 」、「 GitBashでGit用にSSHを設定する = "。

[アカウント]-> [アカウントの管理]-> [SSHキー]:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_manage_account.png

次に:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_add_ssh.png

JetBrainsソフトウェアとMercurial/BitBucketの統合 」からの画像

24
VonC

コマンドを使用してリモートを削除することでこれを解決しました:

git remote remove Origin

そして、sshの代わりにhttps urlを使用してリモートを追加しようとしました

git remote add Origin httpsUrl

Githubの資格情報を要求します。資格情報を入力し、次を使用してgitにプッシュしてみます:

git Push Origin master
17
Ankit Arora

〜/ .sshディレクトリの下に設定ファイルが必要です
ref: https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html
設定ファイルに以下の設定を追加します

Host bitbucket.org
 IdentityFile ~/.ssh/<privatekeyfile>
4
MatthewShin

同じ問題がありました。 SSHキーが正しく設定されました。このような問題を修正しました。

Bitbucketで新しいプロジェクトを作成した後、クローンを使用します。ターミナルでクローン作成コマンドを入力すると、空のプロジェクトがコンピューターにクローンされます。その後、ファイルをこのディレクトリにコピーして、コミットし、bitbucketにプッシュすることができます。

3
Rafael

私が経験した混乱を救うかもしれない2つの小さな説明:

1-接続URLはHTTPSとSSHで異なります

Https経由で接続する場合は、次を使用します

https://[email protected]/owner-account/repo-name.git

ただし、SSH経由で接続する場合、アカウント名は 常に 「git」

ssh://[email protected]/owner-account/repo-name.git

アカウント名を前にしてSSHに接続しようとすると、元の投稿者が受け取ったエラーが発生します。これは、git @に接続するテストを実行し、誤ってユーザー名を試してエラーを確認する方法です。

2-チームアカウント経由のSSHキーは2017年に廃止されます

チームアカウントでSSHキーを設定している場合は、個人アカウントに切り替えることをお勧めします。 eを避けるための便利なヒント

2
Paulo

SourceTreeを使用している場合(私は2.4.1を使用しています)、SSHキーを生成し、それをBitbucket設定に追加する簡単な方法を見つけました。これで問題は解決しました。

  1. SourceTreeで、[設定]に移動します。
  2. [アカウント]タブに移動して、アカウントを選択します。
  3. SSHキーを生成してクリップボードにコピーするオプションが必要です。
  4. それをコピーしたら、ブラウザでBitbucketに移動します。 [アバター]-> Bitbucket設定に移動します。
  5. SSHキーに移動します。
  6. [キーを追加]をクリックします
  7. コピーしたキーを貼り付けます。

Bitbucketから、SSHキーがアカウントに追加されたという確認メールを受け取りました。

参考として、macOSでは、ターミナルを使用して、次のコマンドを使用して、デバイス用に生成されたキーを表示できます。これは、生成したキーが保存される場所です。

ls -la ~/.ssh

他の人が述べたように、このドキュメントは私を助けました: Bitbucket CloudでSSHプロトコルを使用

1
Sarah

このエラーが出ました

リモートホストによって閉じられたbitbucket.orgへの接続。致命的:リモートリポジトリから読み取ることができませんでした。正しいアクセス権があることを確認してください。

それから私は試した

git config --global user.email "[email protected]"

引用符なしで働いた。

0

これはおそらく、SSHエージェント(および/またはBitBucket)に複数のSSHキーがあるために発生します。 この回避策についてはアトラシアンのドキュメント を確認してください

0
warden

エラーの場合:

[エラー] リポジトリアクセスが拒否されました。デプロイメントキーを介したアクセスは読み取り専用です。致命的:リモートリポジトリから読み取ることができませんでした。正しいアクセス権があり、リポジトリが存在することを確認してください。

[エラー] 致命的:リモートリポジトリから読み取ることができませんでした。

[エラー] 致命的: 'https'のリモートヘルパーが見つかりません

私はこの手順に従って解決しました:

最初にこの依存関係をインストールします。

$ yum install expat expat-devel openssl openssl-devel

次に、gitを削除します。

$ yum remove git git-all

ここで、Gitを最新バージョンでビルドしてインストールします。この場合:

$ wget https://github.com/git/git/archive/v2.13.0.tar.gz
$ tar zxf v.2.13.0.tar.gz
$ cd git-2.13.0/

次に、構成のために:

$ make configure
$ ./configure --with-expat --with-openssl

最後に、次のようにインストールします。

$ make 
$ make install install-doc install-html install-info

これで、レポジトリをhttpsで構成できます。

$ git remote add Origin https://github.com/*user*/*repo*.git
# Verify new remote
$ git remote -v

リモートサーバーでsshキーを構成している場合は、削除する必要があります。

0
Johan Morales

Atlassianチュートリアルのようにsshを実行し、秘密キーがリポジトリではなくプロファイルに貼り付けられていることを確認してください:)

0
Hector

Gitコマンドラインは、ページェントで生成されたキー(Windows 10)を好みませんでした。

Serverfault に関する私の答えをご覧ください

0
HostMyBus

このエラーは、リポジトリが存在しない場合にも表示されます。レポジトリ名にダッシュがないことがわかるまで、すべての回答を試しました

0
Mirko

私はmacOSを使用していますが、次にプッシュしようとしたときにビットバケットで公開鍵を設定していましたが、

リポジトリへのアクセスが拒否されました。

致命的:リモートリポジトリから読み取ることができませんでした。

正しいアクセス権があり、リポジトリが存在することを確認してください。

私がしなければならなかったことは、ステップ2. Bitbucket SSHキーセットアップガイド の説明に従って、ssh-agentにキーを追加することでした。特に第3ステップ:

(macOSのみ)再起動するたびにコンピューターがパスワードを記憶するように、〜/ .ssh/configファイルを開いて(または作成して)ファイルに次の行を追加します。

ホスト *
UseKeychainはい

Macユーザーが同じ問題に役立つことを願っています。

0
sstauross

ちょうど試して

git remote add Origin <HTTP URL>
0
Ashok Joshi

1つのリポジトリでこのエラーが発生しました。突然、コミットをプッシュしようとすると、他のすべてのリポジトリが正常に機能しました。問題はSSHキーにあるように見えました(以前のコメントで既に知っているように)-bitbucketでView Profileに移動し、Manage Accountをクリックします。

左側でSSH Keysをクリックし、システムの〜/ .ssh /ディレクトリの下にあるものを追加します。

まだ生成されていない場合-投稿の1つからの指示を使用しますが、必ずパスで-iオプションが必要なデフォルトのid_dsa.pubファイルまたはカスタムの名前のいずれかを使用してくださいあなたが接続するときのキーに.

ssh -i ~/.ssh/customkeyname username@ip_address

Bitbucketでアカウントにローカルキーを追加すると、リポジトリとの対話を開始できるようになります。

0

私にとって最適なソリューションは、プッシュを小さなチャンクに分割することでした。

コミットから大きなスクリーンショット画像ファイル(10mb +)を削除する

最終的にセキュリティはbinファイルの制限に関する問題ではありませんでした

0
Harry Bosh