47

我无法为 GitHub 创建一个 ssh 密钥。我让它工作了很长一段时间,但我不知道发生了什么变化。我已经从我的 GitHub 帐户中删除了以前的 SSH 密钥。按照说明多次生成 SSH 密钥(http://help.github.com/mac-key-setup)并测试“ssh git@github.com”后,我得到以下信息;

PTY 分配请求在通道 0 上失败 错误:嗨...成功通过身份验证...GitHub 不提供 shell 访问...与 github.com 的连接已关闭。

我查看了故障排除指南,发现我的 ssh 目录没有配置文件。创建它后,我不确定在 IdentityFile 行上输入什么或如何输入本地路径。我什至不确定在我的情况下这是否必要?

如果您的 github 认证信息与您的机器帐户信息不同,您需要修改您的 ssh 配置文件。

在 ~/.ssh/config 创建或打开文件添加以下行:

Host github.com
    User git
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile [local path to private key half of github public key you provided]

您可能还需要更新 .ssh 文件夹及其内容的权限。SSH 应用程序将忽略过于宽松的秘密文件。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/*

我还运行了 ssh -v git@github.com 其结果可以在这里看到http://gist.github.com/607283与我所知道的没有什么不同。

知道我做错了什么吗?

4

1 回答 1

39

如问题评论中所述,“PTY 分配请求失败”是关于 GitHub 身份验证的红鲱鱼(这是当他们提供的唯一 SSH 服务是非交互式 Git- over-SSH;身份验证正在工作,他们只是不提供交互式“shell”服务)。


问这个问题的人在评论中写道:

我想相关的问题是,当我尝试创建一个新的存储库和“git push origin master”时,我返回以下“错误:myemail@address.com/myapp 的权限拒绝 myusername。致命:远程端意外挂断"

这似乎更有可能是实际问题。这似乎表明远程命名origin未配置为正确指向 GitHub 存储库。

检查 的输出git remote show -n origin。可能“获取 URL”和“推送 URL”是相同的。它们都应该如下所示:

git@github.com:git-user-name/repository-name

在 Web 上登录 GitHub 时,您可以使用您帐户的用户名或其关联的电子邮件地址。推送到存储库(或从私有存储库获取)时,您必须使用您的实际用户名(电子邮件地址不起作用)。看起来您在那里使用的是您的电子邮件地址,而不仅仅是您的 GitHub 用户名。要解决此问题,请重新配置遥控器的 URL:

git remote set-url origin git@github.com:github-username/repository-name

登录后,您的用户名会显示在 GitHub 网页上的许多地方。最容易找到它的地方是在您的 gravatar 和页面标题上的“仪表板”链接之间(如果没有,您会看到一个剪影图标一个 gravatar 配置)。同一位置链接到您的公开个人资料页面;此页面的 URL 也应以您的用户名结尾。

于 2010-10-02T19:26:48.337 回答