2013-07-14 89 views
32

我想把我的项目推到我的bitbucket上,一直在搞这个大约4天,通过无数问题解决/页面/故障排除/教程。我不知所措,非常沮丧。我这样做之前,但在不同的计算机...反正这里是代码/应答我得到无法推送到bitbucket,权限被拒绝(publickey)

~/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 

我上运行10.8.4的Mac。

那么一点已经取得了进展,最初没有的.ssh文件夹,所以我创建了早在开始的时候,没有known_hosts文件,所以我跑了

ssh -T [email protected] 

我选择的是和这创造一个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

+16

作为一个正式的答案,回答你自己的问题实际上是鼓励,只是让你知道:) – iono

+0

而你的私钥对应的公钥是在你的bitbucket账号上注册的吗? – janos

回答

5

一个更可持续的解决方案是编辑.bashrc(例如vi ~/.bashrc),然后将下面的行添加到它(更换密钥名称)

ssh-add ~/.ssh/YOUR_KEY

这将在启动外壳

13

它可能使系统管理员在恐怖反冲,但痛苦这个问题(Windows)中后,我放弃了SSH,回到HTTPS。

首次将远程存储库添加到Git时,请将SSH参考'[email protected]'替换为HTTPS URL'https://<username>@bitbucket.org'。

你必须每次都输入你的密码,但特别是在Windows下,SSH不像* nix系列那样普遍可用,我认为这与SSH的头痛相比是一个小麻烦。

+0

我在这上面花了几个小时,看来只有_only_才能使用这个工作。我不喜欢在后台不断地运行这样的软件,特别是如果它集成到Windows资源管理器中,但似乎BitBucket不能像GitHub那样以简单的方式工作,我可以简单地使用'ssh- keygen'生成公钥并将其添加到我的GitHub帐户。我已经接受BitBucket和Windows只是一个糟糕的组合,并已采取使用HTTPS。 –

0

在我的情况下,它解决了这个问题从目录中

~/.ssh/id_rsa.pub 

添加SSH密钥上bitbucket.org。我在网站上也将它命名为id_rsa.pub。

在开始时,我添加了另一个我为bitbucket创建的密钥,并将其命名为。第一次远程操作起作用,但几天后请求被拒绝。

0

在Windows中,@efesaid答案用于解决与ssh连接测试有关的问题。顺便说一句,您可以添加-v来查看正在尝试哪些键(按名称)以及连接失败的原因。

但是,当推送到bitbucket时,使用[email protected]:user/repo.git,似乎主机不是精确的bitbucket.org,所以我仍然获得权限被拒绝的问题。我通过(重新)将密钥命名为id_rsa来解决这些问题(这是在ssh测试中尝试的关键名称)。

如果您有单个rsa密钥,则可以使用此功能。对于多个键,或许在配置文件中的主机必须

bitbucket.org:username 

但我不相信这是理解过程

3

我的Linux(Ubuntu的)面临着同样的问题。

我解决了使用它设置在git

$ cat ~/.ssh/id_rsa.pub 

添加到位桶,并推升了资源库:

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

使用cat和SSH密钥来bitbucket.org打印公钥

git remote add origin [email protected]:<username>/your repository name.git 
git push -u origin --all 

就是这样!

0

我认为bitbucket指令是最好的。检查是否安装了SSH,如果不安装它

[email protected]:~$ 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]] [[email protected]]hostname [command] 

[email protected]:~$ ls -a ~/.ssh 
. .. google_compute_engine google_compute_engine.pub identity identity.pub known_hosts 

[email protected]:~$ 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 [email protected] 
The key's randomart image is: 
+--[ RSA 2048]----+ 
|    . | 
|   xx x | 
|   xxxxx | 
|  xxxxxxxxx | 
|  .xxxxxxxx | 
|  xxxxx  | 
|  xxxxxxxxxxxx| 
| xxxxxxxxxxxxx| 
|  xxxxxxxxxxx | 
+-----------------+                                 
[email protected]:~$ 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 

[email protected]-Lenovo-Y50-70:~$ ssh-agent /bin/bash 

检查是否启动代理

[email protected]:~$ ps -e | grep [s]sh-agent 
26503 ?  00:00:00 ssh-agent 
[email protected]:~$ ssh-add ~/.ssh/id_rsa 
Identity added: /home/krasen/.ssh/id_rsa (/home/krasen/.ssh/id_rsa) 
[email protected]:~$ 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) 
[email protected]:~$ cat ~/.ssh/id_rsa.pub 
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

得到这个关键,它在到位桶设置

1

检查exisiting添加为关键SSH密钥

ls -al ~/.ssh 

复制SSH密钥

cat ~/.ssh/id_rsa.pub | pbcopy 

将复制的SSH密钥添加到'Bitbucket Settings','Security','SSH Keys'。

7

在我的情况下新鲜的Ubuntu 16位机我是缺少在~/.ssh文件夹中的文件,以便什么工作:

  1. 前往文件夹~/.ssh
  2. 运行ssh-keygen并命名文件即id_rsa
  3. 运行cat ~/.ssh/id_rsa.pub | xclip -sel clip
    如果你错过xclip只是apt-get install xclip :)
  4. 转到(在URL更改USERNAME t Ø您的用户名到位桶:))https://bitbucket.org/account/user/USERNAME/ssh-keys/
  5. 点击Add key并从剪贴板

魔术粘贴的关键 - 现在的工作:)

+0

问题是针对Mac OS,apt-get无关 – coto

+0

Ubuntu上的问题引导我进行此问答(为什么?请参阅标记),并且此问题涉及到Ubuntu用户 - 因此我描述了我的经验 - (因为我不能100%说这个解决方案可以在其他操作系统中工作)。干杯。 – abrasadera

+0

仍然不适合我(我正在使用Mac),任何想法? – anunixercoder

3

你可能会使用ssh的git的源URL。尝试删除ssh原始文件,就像这样

git remote rm origin 

然后用HTTPS url添加新的来源,然后再次尝试推送。

git remote add origin https://[email protected]/SOMETHING/SOMETHING.git 
git push -u origin master 

确保你粘贴你的url作为来源的bitbucket。

0

我得到了一个类似的问题,我之前曾使用HTTPS访问存储库,必须通过设置url来切换到SSH;

git remote set-url origin ssh://[email protected]/... 
0

这可能很明显,但我花了相当多的时间。

检查在目标上运行git remote -v

在我来说,当我有SSH密钥完全成立,但该命令的输出是:

origin [email protected]:USERNAME/REPOSITORY.git

(注意得到不是git

,而不是

origin [email protected]:USERNAME/REPOSITORY.git

再次,这是一个非常特别的情况,但一定要仔细检查这一制度的字符串,如果你遇到了麻烦。

您可以用下面的命令解决这个问题:

git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

0

建立混帐与git config --global user.name "My Name"git config --global user.email [email protected],我仍然有被拒绝的权限,(公钥)错误麻烦之后。为了解决这个问题,我首先生成与

ssh-keygen 

新的SSH令牌与

pbcopy < ~/.ssh/YOUR_KEY 

之后把它抄了,我去bitbucket.com将其添加为我设置一个新的SSH密钥。然后,我回到我的终端与

ssh-add ~/.ssh/YOUR_KEY. 

添加新键,我是有是我错过了关键的ssh-add [key]命令的大问题。

0

确保您已在终端上切换到正确的用户。

在我的情况下,root用户不是在bitbucket设置面板上添加了ssh密钥的用户。使用sudo运行git可以让它从root用户运行,而我自己的用户就是添加了密钥的用户。

相关问题