【发布时间】:2011-04-20 03:40:12
【问题描述】:
我无法为 GitHub 创建一个 ssh 密钥。我让它工作了很长一段时间,但我不知道发生了什么变化。我已经从我的 GitHub 帐户中删除了以前的 SSH 密钥。在按照说明多次生成 SSH 密钥 (http://help.github.com/mac-key-setup) 并测试“ssh git@github.com”后,我得到以下信息;
PTY 分配请求失败于 频道 0 错误:嗨...成功 经过身份验证...GitHub没有 提供外壳访问...连接到 github.com 已关闭。
我查看了troubleshooting guide 并注意到我的 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 与我所知道的没什么不同。
知道我做错了什么吗?
【问题讨论】:
-
使用命令行 ssh 登录不提供正常交互访问的服务时,“PTY 分配请求失败”警告是无害的。 Git-over-SSH 不需要 tty 并且 GitHub 的 SSH 服务被配置为拒绝为传入连接分配一个。你可以告诉ssh不要用
ssh -T git@github.com请求一个tty。正如下一条消息所说,您的身份验证工作正常。您在实际使用 Git 通过 SSH 访问 GitHub 时遇到任何问题吗? -
谢谢克里斯——我听过的最好的解释。我理解你评论的第一部分。我想相关的问题是,当我尝试创建一个新的存储库和“git push origin master”时,我返回以下“错误:myemail@address.com/myapp 的权限拒绝 myusername。致命:远程端意外挂断“所以我不确定我在这个过程中的哪个地方失败了......我认为这是我的 ssh 密钥。我应该按照您的建议继续尝试 ssh -T git@github.com 吗?
-
我们看到了“successfully authenticated”的信息,所以没有必要继续尝试直接ssh进入GitHub。我提到了
-T选项来证明“PTY 分配”消息并不表示硬故障(无论您是否使用-T运行,您都会收到相同的“成功验证”消息)。我会在答案中写更多关于真正问题的内容。 -
另外,在回复 cmets 时,如果您以“@username”(details on MSO)开始您的评论,那么指定的人将更有可能注意到您的评论。如果我没有回来检查这个问题,我会错过你的评论。
-
我的区别是
ssh -tvsssh -T