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-add
和git 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 授权的主要内容,如果未能解决你的问题,请参考以下文章