2017-03-16 162 views
0

我想用SSH克隆仓库仓库。因此,我在本地机器上创建了一个ssh密钥对,并在我的git repo(即Bitbucket服务器)上添加了公钥。使用SSH克隆git仓库

然后,当我看到here,我试图克隆这样的:

git clone ssh://[email protected]:7999/my_project.git 

git clone ssh://[email protected]:7999/my_project.git 

这些选项没有工作,但是:

Permission denied (publickey). 
fatal: Could not read from remote repository. 
Please make sure you have the correct access rights 
and the repository exists. 

进步的唯一一点我已经被尝试这种:

git clone [email protected]:7999/my_project.git 

这需要我的密码3次,然后失败。我怀疑这不使用SSH,但是, 因为我认为SSH不应该要求输入密码。

Password: 
Password: 
Password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,keyboard-interactive). 
fatal: Could not read from remote repository. 

那么我该如何使用SSH克隆git仓库呢?

编辑

我在Windows和我使用Git猛砸。

ssh-add -l 

返回

The agent has no identities. 
+0

Bitbucket *私人*服务器或云托管服务器? –

+0

什么操作系统 - Windows? Linux呢? OSX? – PatrickSteele

+0

@patricksteele Windows。我更新了这个问题。 – octavian

回答

0

你确定这台主机上的SSH工作在端口7990?如果该回购是到位桶,然后我几乎可以肯定,对于SSH

git clone [email protected]/my_project.git 

您使用甘蔗默认端口就像git with bitbucket

+0

Bitbucket服务器在'7990'上。我在代码中找到了一个使用'7999'的git ssh命令。我尝试了两个端口,但没有成功。 – octavian

+0

是否检查过本指南:https://confluence.atlassian.com/bbkb/permission-denied-publickey-302811860.html? – darvark

0

大多数服务器将期望用户用“混帐”用户名进行身份验证,和他们自己的私钥用于识别目的。

刚刚尝试用SSH连接:

ssh ${USERNAME}@${SERVER} -p ${PORT} 

如果你甚至能够对服务器进行身份验证,从公式除去混帐这将建立。

你的私钥在哪里?如果它不是~/.ssh/id_rsa(或配置的路径),那么你需要提供它的路径。试试这个:

ssh ${USERNAME}@${SERVER} -p ${PORT} -i ${MY_PRIVATE_KEY} 

如果这样做,那么你可以设置你的SSH配置更加方便。 在~/.ssh/config你可以把这样的事情:

Host ${FRIENDLY_NAME} 
    User ${USERNAME} 
    Hostname ${SERVER} 
    Port ${PORT} 
    IdentityFile ${MY_PRIVATE_KEY} 

然后,您可以测试像这样的连接:

ssh ${FRIENDLY_NAME} 

最后:

git clone ssh://${FRIENDLY_NAME}/${REPO_PATH} 

你只需要指定该端口如果不是默认的(22)。

注:我用波浪线(~),因为你没有指定的Windows的时候,我写我的答案。您可以通过按Win + R,输入点号.,然后按回车键在Windows上找到您的“主目录”。这通常会带你到C:\Users\%USERNAME%

+0

对于'ssh $ {USERNAME} @ $ {SERVER} -p $ {PORT} -i $ {MY_PRIVATE_KEY}',我得到'shell请求在通道0失败。 – octavian

+0

成功!不是一个非常友好的,但仍然。 – Attie

0

你需要检查你的公钥许可。您的访问因特权而被拒绝。

这将解决您的问题。

chmod 700 /root/.ssh/authorized_keys 
chmod 600 /root/.ssh/authorized_keys