为什么限制部署会给出Permission denied(publickey)?

时间:2011-11-01 15:18:44

标签: git ssh capistrano ssh-keys public-key

好吧,我对某些事感到困惑......我能够很好地提交到我的github存储库,但是当我尝试从我的本地文件夹到我的临时服务器执行cap deploy时,我得到{{ 1}}

如果我运行Permission denied (publickey).,我实际上会收到错误ssh git@github.com

所以这里有些错误。

如果我运行PTY allocation request failed on channel 0,我会:

ssh -vT git@github.com

我的密钥位于〜/ .ssh文件夹中,所以问题是什么,为什么我能够在存在密钥问题时提交到存储库?

更新 当我进入我的.ssh文件夹时,我注意到了一些事情。当我安装Github for Mac时创建了一个新的密钥对...为什么它不能只使用我不知道的现有密钥对。

6 个答案:

答案 0 :(得分:112)

我必须做以下事情:

   $ ssh-add -D   #remove existing identities
   $ ssh-agent    #copy the lines & run them
   $ ssh-add      #uses the output from above

答案 1 :(得分:30)

我有时会收到此错误,我只需输入$ ssh-add -k即可添加我的身份,然后就可以了。不确定为什么这样做或为什么错误信息没有建议,但它总是在拯救!

答案 2 :(得分:18)

我会确保您的登台服务器具有对github的ssh访问权限。通过登台服务器上的终端运行相同的命令“ssh -vT git@github.com”;这将有助于确定它是否是远程计算机上的ssh问题。

答案 3 :(得分:2)

我在为Mac OS X安装GitHub后遇到了同样的问题。该应用程序在〜/ .ssh / github_rsa中创建了一个新的ssh私钥,并将其添加到ssh身份验证代理中。

检查ssh auth代理缓存了哪个密钥:

$ ssh-add -l
2048 63:0c:a6:51:63:c1:35:76:5d:02:77:97:39:48:0e:4a /Users/jiangxin/.ssh/github_rsa (RSA)

每当您连接到github.com或其他ssh服务时,首先使用此密钥。

使用以下命令从ssh-agent清除缓存的密钥:

$ ssh-add -D

现在ssh客户端应该正常工作,使用〜/ .ssh / config或〜/ .ssh / id_rsa中定义的密钥。

答案 4 :(得分:1)

如果您使用MAC。也许您的ssh密钥未添加到身份验证代理中。以下命令将执行该操作

ssh-add path_to_private_key

例如

ssh-add ~/.ssh/id_rsa

答案 5 :(得分:0)

错误是因为,ssh-add不知道如何与身份验证代理进行通信。 可以通过设置SSH_AUTH_SOCK环境变量来解决该问题。

如果你运行ssh-agent,你应该得到一些像这样的输出:

SSH_AUTH_SOCK=/tmp/ssh-agVZL13989/agent.13989; export SSH_AUTH_SOCK;
SSH_AGENT_PID=13990; export SSH_AGENT_PID;
echo Agent pid 13990;SSH_AUTH_SOCK=/tmp/ssh-agVZL13989/agent.13989; export SSH_AUTH_SOCK;
SSH_AGENT_PID=13990; export SSH_AGENT_PID;
echo Agent pid 13990;

执行此操作:

eval $(ssh-agent)

然后:

ssh-add -D