如何通过plink获得github的读写权限?

时间:2012-05-23 02:55:59

标签: git ssh github putty plink

在中国阻止了对github的SSH访问,我跟着this tutorial设置了ssh隧道:

$ plink -N myuser@myhomessh.com -pw mypassword -L 9418:github.com:9418
$ git clone git://localhost/someuser/someproject.git

我无法通过github网址将代码推送到Git Read-Only 所以我试试这个:

$ git clone git@localhost:someuser/someproject.git
Cloning into 'someproject'...
git@localhost's password: 

这里出了点问题。我已将~/.ssh/id_rsa.pub添加到github

2 个答案:

答案 0 :(得分:2)

使用SSH隧道,您将创建到端口9418的隧道。运行简单的git服务器,它只允许未经身份验证的只读访问。你不能推到那里。请注意,在您的第一个示例中,您使用了git://协议,该协议表明它连接到端口9418并使用该协议。

在你的秒示例中,您正在尝试通过SSH使用git,这会在端口22上创建连接。您可以使用类似的东西来创建SSH隧道(假设您已经有一个本地运行的SSH服务器已经在监听港口22当地)

plink -N myuser@myhomessh.com -pw mypassword -L 2222:github.com:22
git clone ssh://git@localhost:2222/someuser/someproject.git

答案 1 :(得分:0)

好吧,git clone git@localhost:someuser/someproject.git命令尝试使用SSH(在端口22上)连接到localhost。我不知道为什么它要求凭证(好像有什么东西正在监听这个端口)。

对我来说,克服脑死亡限制的唯一合理方法是设置位于某个IP子网中的SSH jumphost,该子网没有被阻止的访问权限(即在中国境外)。 / p>

也可能有其他(姑息性)解决方案:

  • 如果您需要托管自己的代码,请不要使用github,因为其他Git托管服务提供商可能无法访问它们。
  • 如果您需要推送到您不拥有的项目,您可以采用次优的方式来贡献代码:将修补程序系列或git bundle'更改集发送给维护者或其他愿意赞助您获取代码的人英寸

更新:好吧,我重新阅读了你的答案,看来你确实在localhost上运行了某种SSH服务器。因此,澄清一下:用于在github上进行身份验证的SSH密钥是在与 github的SSH服务器与本地SSH服务器通信时由客户端使用的。我的意思是,使用git://协议从github克隆一个repo,你根本不需要设置任何类型的隧道。要通过SSH访问github,你总是必须通过SSH连接到github ,这是被阻止的。如果github有另一个端口(而不是22)接受SSH连接,那将是很好的。但我不知道他们是否有这样的东西。