我正在尝试将我的项目推到我的bitbucket上,一直在搞乱这个问题大约4天,通过无数的问题解决/页面/故障排除/教程。我不知所措,非常沮丧。我以前在不同的计算机上做过这个...无论如何,这里是我得到的代码/响应
~/dev/sample_app git push -u origin --all
The authenticity of host 'bitbucket.org (131.103.20.168)' can't be established.
RSA key fingerprint is 81:7b:2c:f5:6f:18:2b:7c:4b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
~/dev/sample_app
我在Mac上运行10.8.4。
所以取得了一点进展,最初没有.ssh文件夹,所以我在开始时创建了那条路,没有known_hosts文件,所以我跑了
ssh -T git@bitbucket.org
我选择了yes,这创建了一个known_hosts文件,当我再次尝试推送时,我得到了:
~/dev/sample_app git push -u origin --all
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我的.ssh文件夹是700,内部的密钥都是600。
答案 0 :(得分:34)
您可以在〜/ .ssh / config文件中设置IdentityFile标志文件,如下所示:
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa
运行时
ssh git@bitbucket.org
ssh客户端允许您选择从中读取RSA或DSA身份验证的身份(私钥)的文件。
答案 1 :(得分:14)
这可能会让系统管理员惊恐地退缩,但在遇到这个问题后(Windows)我放弃了SSH并重新使用HTTPS。
首次将远程存储库添加到Git时,请使用HTTPS URL“git@bitbucket.org...
”替换SSH引用“https://<username>@bitbucket.org
”。
您必须每次都输入密码,但特别是在Windows不像* nix系列那样常用的Windows下,我认为与SSH的头痛相比,这是一个小小的不便。
答案 2 :(得分:14)
您可能正在使用ssh作为git origin url。尝试删除ssh原点
git remote rm origin
然后使用HTTPS网址添加新来源并尝试再次推送。
git remote add origin https://git@bitbucket.org/SOMETHING/SOMETHING.git
git push -u origin master
确保将来自bitbucket的网址粘贴为原点。
答案 3 :(得分:10)
就我的情况而言,在新的Ubuntu 16机器上,我丢失了~/.ssh
文件夹中的文件,所以有用了:
~/.ssh
ssh-keygen
并为您的文件命名,即id_rsa
cat ~/.ssh/id_rsa.pub | xclip -sel clip
xclip
apt-get install xclip
:)Add key
并粘贴剪贴板中的密钥魔术 - 它现在有效:)
答案 4 :(得分:7)
更可持续的解决方案是修改.bashrc
(例如vi ~/.bashrc
),然后将以下行添加到其中(替换密钥名称)
ssh-add ~/.ssh/YOUR_KEY
这将在您启动shell时自动加载密钥
答案 5 :(得分:5)
我在Linux(Ubuntu)中面临同样的问题。
我使用git
中的设置解决了它:
git config --global user.name "Your Name"
git config --global user.email your.email@example.com
使用cat和SSH密钥将公钥打印到bitbucket.org:
$ cat ~/.ssh/id_rsa.pub
添加Bitbucket并推送存储库:
git remote add origin git@bitbucket.org:<username>/your repository name.git
git push -u origin --all
这就是全部!
答案 6 :(得分:4)
我遇到了与BitBucket类似的问题。在我的情况下,它只有在我发现我应该从git clone命令中删除sudo后才能修复!
根据Attlassian:
你克隆,推送或拉动时不应该使用sudo ,因为 ssh-agent在用户级别而不是根级别上运行。
答案 7 :(得分:3)
使用git config --global user.name "My Name"
设置git后
git config --global user.email myemail@x.com
,我仍然遇到“Permission Denied,(publickey)错误”的问题。为了解决这个问题,我首先使用
ssh-keygen
并用
复制它pbcopy < ~/.ssh/YOUR_KEY
之后,我去了bitbucket.com,在我的设置中将其添加为新的SSH密钥。然后,我返回终端,用
添加新密钥ssh-add ~/.ssh/YOUR_KEY.
我遇到的一个大问题是我错过了关键的ssh-add [key]
命令。
答案 8 :(得分:2)
就我而言,发生此问题是因为我在 ~/.ssh 中有许多 ssh 密钥。我必须在 ~/.ssh/config 中创建一个 bitbucket.org 特定条目,如下所示:
Host bitbucket.org
Hostname bitbucket.org
IdentityFile <location-of-.ssh-directory>/bb-rsa
IdentitiesOnly=yes
我的猜测是,由于我们在克隆时没有指定密钥,ssh 会尝试 ~/.ssh 中的所有密钥,bitbucket 将其视为黑客尝试并拒绝我们的 repo 克隆尝试。
答案 9 :(得分:1)
我喜欢这里的答案,但它们都错过了可能的根本原因。
使用命令:
ssh -T git@bitbucket.org
用您自己的位桶主机替换bitbucket.org
。
如果您得到类似的答案:
此部署密钥具有对以下存储库的读取权限:
团队名称/存储库名称
这就是为什么推送到存储库不起作用的原因。
您还可以在Bitbucket Web UI中再次检查,注意描述中的read-only access
:
希望这为相同的问题提供了不同的视角。
答案 10 :(得分:1)
如果any.ssh修复不起作用或您克隆为https,则可能存在验证问题。就我而言,我通过在克隆存储库时提供用户名和密码来解决此错误。当您在同一台计算机上使用多个帐户时,可能会发生此问题。
使用“ git clone https://username:password@github.com/username/repository.git”命令以及您的用户名和密码以及回购URL。
答案 11 :(得分:1)
检查是否存在现有的SSH密钥
ls -al ~/.ssh
复制SSH密钥
cat ~/.ssh/id_rsa.pub | pbcopy
将复制的SSH密钥添加到“Bitbucket设置”,“安全”,“SSH密钥”。
答案 12 :(得分:0)
尝试从bitbucket服务器中拉出时出现相同的错误。此答案对我https://stackoverflow.com/users/2957677/toby-mellor
有帮助代替使用 sudo git pull origin branch_name
我更改为 git pull origin branch_name
这解决了我的问题
答案 13 :(得分:0)
如果您使用 Fedora 33+ 并使用 RSA 算法。使用更安全的算法,如 ECDSA 或 ED25519。
ssh-keygen -t ed25519 -C "your_email@example.com"
答案 14 :(得分:0)
如果您的计算机中有多个键,请确保将位桶添加到列表中,例如下面的
.ssh/config
# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_accelya
# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal
# Personal account bitbucket
Host bitbucket
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal_bitbucket
答案 15 :(得分:0)
如果您将SourceTree与Bitbucket一起使用,则下一个解决方案是
转到您的个人Bitbucket设置 进入应用密码并创建一个应用密码 授予应用密码的下一个权限:
Repositories (R-W-A-D)
Projects (R-W)
Pull request (R-W)
之后,保留生成的密码 尝试再次克隆您的仓库 将显示一个密码弹出窗口,输入生成的密码。 就是这样。
答案 16 :(得分:0)
答案 17 :(得分:0)
答案 18 :(得分:0)
在我的情况下,它解决了从目录
添加ssh密钥的问题~/.ssh/id_rsa.pub
<{3>} bitbucket.org。我在网站上也将它命名为id_rsa.pub。
一开始我添加了另一个我为bitbucket创建的密钥并将其命名为。第一批远程操作有效但几天后请求被拒绝。
答案 19 :(得分:0)
我的问题与权限有关。
我的项目目录由root
拥有,但我以ubuntu
身份登录。如果我输入git命令,我会得到PERMISSION DENIED
,例如git pull origin master
,所以我使用了sudo git pull origin master
。
我已使用BitBucket从ubuntu
注册了/home/ubuntu/.ssh/id_rsa.pub
的SSH密钥。
但是,我正在使用sudo
。所以使用的SSH密钥实际上是/home/root/.ssh/id_rsa.pub
,这与BitBucket的不同。
我案例的解决方案
chown -R username_here:username_here project/folder/here
现在,如果您不添加sudo
OR 提供BitBucket root
的密钥
答案 20 :(得分:0)
确保已切换到终端上的正确用户。
在我的情况下,root用户不是在bitbucket设置面板上添加了ssh键的用户。使用sudo运行git使它从root用户运行,我自己的用户就是添加了密钥的用户。
答案 21 :(得分:0)
在Windows中,@ ftesaid的答案用于解决ssh连接测试的问题。顺便说一句,您可以添加-v以查看正在尝试的键(按名称)以及连接失败的原因。
然而,当推送到bitbucket时,使用git@bitbucket.org:user / repo.git,似乎主机不是精确的bitbucket.org所以我仍然得到许可被拒绝的问题。我通过(重新)将我的密钥命名为id_rsa来解决它们(这是在ssh测试中尝试的密钥名称)。
如果您有一个rsa密钥,则此方法有效。对于多个密钥,配置文件中的主机可能必须是
bitbucket.org:username
但我不确定这是不是
答案 22 :(得分:0)
这可能很明显,但我花了很多时间。
运行git remote -v
时检查目的地
在我的情况下,我完全设置了ssh键,但此命令的输出是:
origin get@github.com:USERNAME/REPOSITORY.git
(请注意 获取 而非 git )
而不是
origin git@github.com:USERNAME/REPOSITORY.git
同样,这是一个非常特殊的情况,但如果您遇到问题,请务必仔细检查此系统的字符串。
您可以使用以下命令解决此问题:
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
答案 23 :(得分:0)
我遇到了一个类似的问题,我之前使用HTTPS访问存储库,并且必须通过设置这样的URL来切换到SSH;
git remote set-url origin ssh://git@bitbucket.org/...
答案 24 :(得分:0)
我认为bitbucket指令是最好的。检查ssh是否已安装,如果未安装
krasen@krasen-Lenovo-Y50-70:~$ ssh -v
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I xxxxx] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
krasen@krasen-Lenovo-Y50-70:~$ ls -a ~/.ssh
. .. google_compute_engine google_compute_engine.pub identity identity.pub known_hosts
krasen@krasen-Lenovo-Y50-70:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/krasen/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/krasen/.ssh/id_rsa.
Your public key has been saved in /home/krasen/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx krasen@krasen-Lenovo-Y50-70
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| xx x |
| xxxxx |
| xxxxxxxxx |
| .xxxxxxxx |
| xxxxx |
| xxxxxxxxxxxx|
| xxxxxxxxxxxxx|
| xxxxxxxxxxx |
+-----------------+
krasen@krasen-Lenovo-Y50-70:~$ ls -la ~/.ssh
total 40
drwx------ 2 krasen krasen 4096 Jun 29 14:30 .
drwxr-xr-x 110 krasen krasen 4096 Jun 29 13:00 ..
-rw------- 1 krasen krasen 1675 Mar 18 2015 google_compute_engine
-rw-r--r-- 1 krasen krasen 409 Mar 18 2015 google_compute_engine.pub
-rw------- 1 krasen krasen 1679 Jun 29 13:15 identity
-rw-r--r-- 1 krasen krasen 409 Jun 29 13:15 identity.pub
-rw------- 1 krasen krasen 1679 Jun 29 14:30 id_rsa
-rw-r--r-- 1 krasen krasen 409 Jun 29 14:30 id_rsa.pub
-rw-r--r-- 1 krasen krasen 4698 Jun 29 13:16 known_hosts
krasen@krasen-Lenovo-Y50-70:~$ ssh-agent /bin/bash
krasen@krasen-Lenovo-Y50-70:~$ ps -e | grep [s]sh-agent
26503 ? 00:00:00 ssh-agent
krasen@krasen-Lenovo-Y50-70:~$ ssh-add ~/.ssh/id_rsa
Identity added: /home/krasen/.ssh/id_rsa (/home/krasen/.ssh/id_rsa)
krasen@krasen-Lenovo-Y50-70:~$ ssh-add -l
2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx /home/krasen/.ssh/id_rsa (RSA)
krasen@krasen-Lenovo-Y50-70:~$ cat ~/.ssh/id_rsa.pub
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
获取此密钥并将其添加为bitbucket设置中的密钥