Git 和 ssh 授权

Posted

技术标签:

【中文标题】Git 和 ssh 授权【英文标题】:Git and ssh authorizating 【发布时间】:2011-02-02 12:17:13 【问题描述】:

我无法使用生成的 ssh 密钥登录 github。我已遵循本手册:http://help.github.com/linux-key-setup 但在步骤:

ssh git@github.com

我明白了:

代理承认未能使用 钥匙。没有权限 (公钥)。

怎么了?当然,我正在添加我自己的用户电子邮件。


试过dsa-key,还是一样。

【问题讨论】:

【参考方案1】:

我发现这对我有很大帮助http://playwithrubyandrails.blogspot.com/2011/04/process-for-deploying-app-on-heroku.html

ssh-add ~/.ssh/id_rsa在生成相关密钥后解决了我的问题

【讨论】:

ssh-add 到底是做什么的? @duckx 它将 id_rsa 密钥添加到系统上的已知主机。在这里查看linux.die.net/man/1/ssh-add 以获取有关选项等的更多信息... @Patoshiパトシ 不不不!不要听 jamesc 那个...ssh-add 要求您输入密码并使用ssh-agent 服务将解密的私钥保存在内存中。然后,当您稍后尝试使用相同的私钥时,代理将清楚地提供它。我不知道确切的功能,我可以想象ssh-agent 将密钥加密并在需要时对其进行解密。也就是说,它可能有一种方法可以以一种更安全的方式保存密钥,而不是仅仅保持清晰。 known_hosts 是另一回事。【参考方案2】:

生成 ssh 密钥后,我按照 jamesw 的建议执行了下面列出的命令。

$ ssh-add ~/.ssh/id_rsa

我输入了密码。然后尝试克隆 heroku 存储库。这次效果很好。

【讨论】:

【参考方案3】:

这是一个 ubuntu 问题。导出“SSH_AUTH_SOCK=0”为我解决了这个问题。更多详情请访问 -https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/201786。

【讨论】:

谢谢!关于如何生成 SSH 密钥,我遵循了很多不同的提示,但正是这个简单的导出方法在 Ubuntu 上修复了它。 我的变量设置为:SSH_AUTH_SOCK=/run/user/1000/keyring/ssh。我想这将消除在ssh-agent 中保存密钥的能力。【参考方案4】:

来自troubleshooting guide:

权限被拒绝(公钥)

这通常是由于 ssh 不能 找到你的钥匙。确保您的密钥是 在默认位置 ~/.ssh。如果 你再次运行 ssh-keygen 在所有 3 个提示处按回车键 自动放在这里。然后你 可以将 id_rsa.pub 的内容添加到 我的 github 密钥。如果 id_rsa.pub 没有 工作尝试 id_dsa.pub。你可能需要 使用 ssh-keygen 生成新的 dsa 密钥 -t dsa 如果你只有一个 rsa 密钥。

如果您仍然遇到问题并且 以上都不起作用,你可能有 来自 debian 的列入黑名单的密钥 打开 ssh 错误。你应该更新 打开 ssh 并重新生成您的密钥。

所以,只是为了检查 - 您的密钥在 ~/.ssh/ 下是否可用 id_rsa 和 id_rsa.pub 或其他方式,您是否指定了它们的用途?

【讨论】:

我在发帖之前发现了这一点。当然,我的密钥在 ~/.ssh 中。 很好,那么,该目录的权限是否设置为 0600?只是运行可能是错误的事情,因为看起来 ssh-agent 或 ssh 没有获取您的密钥。【参考方案5】:

感谢这个帖子(我知道那不是 github),我能够让 gitlab 正常工作。

我也发现@jamesw 的答案是正确的。

我最终不得不删除我的 known_hosts 文件并使用与我的 gitlab 帐户相同的密码重新创建我的 ssh 密钥。

然后我做了ssh-addgit push -u origin master。成功!

感谢大家的帮助。

更新: 我决定在没有密码的情况下重新制作我的 ssh 密钥并再次遇到此错误。

这一次,我能够将旧的known_hosts 复制到新的.ssh/ 并简单地运行ssh-add

【讨论】:

【参考方案6】:

出现这个问题主要有以下几个原因:

公钥和私钥对错误。您必须在服务器/您放置公钥的 git 帐户上验证密钥公钥。即使是很小的空格或制表符也会导致错误。

如果您确定您的公钥是正确的,请检查您机器中 ~/.ssh 文件夹中的公钥格式。对于 openssh,您不能使用 puttygen 格式的公钥,反之亦然。要更改格式,您可以使用您的私钥使用以下命令

$ ssh-keygen -e -f ~/.ssh/id_rsa > ~/.ssh/id_rsa_com.pub $ ssh-keygen -i -f ~/.ssh/id_rsa_com.pub > ~/.ssh/id_rsa.pub

最后检查您是否已将密钥添加到系统中的 ssh 客户端。您可以使用以下命令来做到这一点

$ eval "$(ssh-agent -s)"

$ ssh-add

【讨论】:

【参考方案7】:

Above Accepted 解决方案对我不起作用,但这有效 http://ripan27.wordpress.com/2010/04/01/ssh-gitgithub-com-agent-admitted-failure-to-sign-using-the-key-permission-denied-publickey/

【讨论】:

【参考方案8】:

请注意,ssh-agent 是每个会话(每个终端)。使用像 keychain 这样的 ssh 代理管理器(请参阅其有关如何设置的文档)通过任何会话(从任何术语)进行访问。

【讨论】:

【参考方案9】:

当我从另一个操作系统复制 id_rsa 和 idrsa.pub 时,我遇到了同样的错误。这些文件有 644 权限。所以我把它改成了600。错误已修复。

【讨论】:

以上是关于Git 和 ssh 授权的主要内容,如果未能解决你的问题,请参考以下文章

ssh授权成功连接git@github.com后git命令授权失败

git授权通过ssh失败了

git提交时 ssh授权操作

已添加 SSH 密钥时 GIT push 未授权

Git使用ssh密钥

git使用ssh密钥