新しいリポジトリを作成しましたが、奇妙なエラーが発生しています。以前に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.
私はここで迷っています。このリポジトリを共有している友人は、うまくアクセスし、うまくプッシュしましたが、うまくいかないようです。
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...
そのようなものを参照してください?
キーがすでに生成されているかどうかを確認します。
$ 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
GitBashを実行するたびにSSHエージェントを起動していることを確認します。
$ cat ~/.bashrc
start_agent
という関数が表示される場合、この手順は既に完了しています。以下を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
.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 ......」で始まるものを返す必要があります
ssh-rsa
ビットと末尾の== [email protected]
ビットを含む)CTRL+A
を押してからCTRL+C
を押して、公開鍵をクリップボードに再度コピーします。次の手順を実行して、BitBucketで秘密鍵を構成します。
Global Public Key
と入力しますこれで、Global Public Key
エントリがキーのリストに表示されます。
リモコンを確認します。
$ 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
TortoiseGit や command line tools などのGUIツールを使用します。
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
このエラーは、秘密鍵を ssh-agent
に追加し忘れた場合にも発生します。でこれを行います:
ssh-add ~/.ssh/id_rsa
再フォーマットされたとは、おそらく公開および非公開のsshキー(〜/ .ssh内)を削除したことを意味します。
「 BitbucketでSSHプロトコルを使用する 」、「 GitBashでGit用にSSHを設定する = "。
[アカウント]-> [アカウントの管理]-> [SSHキー]:
次に:
コマンドを使用してリモートを削除することでこれを解決しました:
git remote remove Origin
そして、sshの代わりにhttps urlを使用してリモートを追加しようとしました
git remote add Origin httpsUrl
Githubの資格情報を要求します。資格情報を入力し、次を使用してgitにプッシュしてみます:
git Push Origin master
〜/ .sshディレクトリの下に設定ファイルが必要です
ref: https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html
設定ファイルに以下の設定を追加します
Host bitbucket.org
IdentityFile ~/.ssh/<privatekeyfile>
同じ問題がありました。 SSHキーが正しく設定されました。このような問題を修正しました。
Bitbucketで新しいプロジェクトを作成した後、クローンを使用します。ターミナルでクローン作成コマンドを入力すると、空のプロジェクトがコンピューターにクローンされます。その後、ファイルをこのディレクトリにコピーして、コミットし、bitbucketにプッシュすることができます。
私が経験した混乱を救うかもしれない2つの小さな説明:
Https経由で接続する場合は、次を使用します
https://[email protected]/owner-account/repo-name.git
ただし、SSH経由で接続する場合、アカウント名は 常に 「git」
ssh://[email protected]/owner-account/repo-name.git
アカウント名を前にしてSSHに接続しようとすると、元の投稿者が受け取ったエラーが発生します。これは、git @に接続するテストを実行し、誤ってユーザー名を試してエラーを確認する方法です。
チームアカウントでSSHキーを設定している場合は、個人アカウントに切り替えることをお勧めします。 eを避けるための便利なヒント
SourceTreeを使用している場合(私は2.4.1を使用しています)、SSHキーを生成し、それをBitbucket設定に追加する簡単な方法を見つけました。これで問題は解決しました。
Bitbucketから、SSHキーがアカウントに追加されたという確認メールを受け取りました。
参考として、macOSでは、ターミナルを使用して、次のコマンドを使用して、デバイス用に生成されたキーを表示できます。これは、生成したキーが保存される場所です。
ls -la ~/.ssh
他の人が述べたように、このドキュメントは私を助けました: Bitbucket CloudでSSHプロトコルを使用
このエラーが出ました
リモートホストによって閉じられたbitbucket.orgへの接続。致命的:リモートリポジトリから読み取ることができませんでした。正しいアクセス権があることを確認してください。
それから私は試した
git config --global user.email "[email protected]"
引用符なしで働いた。
これはおそらく、SSHエージェント(および/またはBitBucket)に複数のSSHキーがあるために発生します。 この回避策についてはアトラシアンのドキュメント を確認してください
エラーの場合:
[エラー] リポジトリアクセスが拒否されました。デプロイメントキーを介したアクセスは読み取り専用です。致命的:リモートリポジトリから読み取ることができませんでした。正しいアクセス権があり、リポジトリが存在することを確認してください。
[エラー] 致命的:リモートリポジトリから読み取ることができませんでした。
[エラー] 致命的: '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キーを構成している場合は、削除する必要があります。
Atlassianチュートリアルのようにsshを実行し、秘密キーがリポジトリではなくプロファイルに貼り付けられていることを確認してください:)
Gitコマンドラインは、ページェントで生成されたキー(Windows 10)を好みませんでした。
Serverfault に関する私の答えをご覧ください
このエラーは、リポジトリが存在しない場合にも表示されます。レポジトリ名にダッシュがないことがわかるまで、すべての回答を試しました
私はmacOSを使用していますが、次にプッシュしようとしたときにビットバケットで公開鍵を設定していましたが、
リポジトリへのアクセスが拒否されました。
致命的:リモートリポジトリから読み取ることができませんでした。
正しいアクセス権があり、リポジトリが存在することを確認してください。
私がしなければならなかったことは、ステップ2. Bitbucket SSHキーセットアップガイド の説明に従って、ssh-agentにキーを追加することでした。特に第3ステップ:
(macOSのみ)再起動するたびにコンピューターがパスワードを記憶するように、〜/ .ssh/configファイルを開いて(または作成して)ファイルに次の行を追加します。
ホスト *
UseKeychainはい
Macユーザーが同じ問題に役立つことを願っています。
ちょうど試して
git remote add Origin <HTTP URL>
1つのリポジトリでこのエラーが発生しました。突然、コミットをプッシュしようとすると、他のすべてのリポジトリが正常に機能しました。問題はSSHキーにあるように見えました(以前のコメントで既に知っているように)-bitbucketでView Profile
に移動し、Manage Account
をクリックします。
左側でSSH Keys
をクリックし、システムの〜/ .ssh /ディレクトリの下にあるものを追加します。
まだ生成されていない場合-投稿の1つからの指示を使用しますが、必ずパスで-i
オプションが必要なデフォルトのid_dsa.pubファイルまたはカスタムの名前のいずれかを使用してくださいあなたが接続するときのキーに.
ssh -i ~/.ssh/customkeyname username@ip_address
Bitbucketでアカウントにローカルキーを追加すると、リポジトリとの対話を開始できるようになります。
私にとって最適なソリューションは、プッシュを小さなチャンクに分割することでした。
コミットから大きなスクリーンショット画像ファイル(10mb +)を削除する
最終的にセキュリティはbinファイルの制限に関する問題ではありませんでした