在中国阻止了对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
。
答案 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>
也可能有其他(姑息性)解决方案:
git bundle
'更改集发送给维护者或其他愿意赞助您获取代码的人英寸 更新:好吧,我重新阅读了你的答案,看来你确实在localhost上运行了某种SSH服务器。因此,澄清一下:用于在github上进行身份验证的SSH密钥是在与 github的SSH服务器与本地SSH服务器通信时由客户端使用的。我的意思是,使用git://
协议从github克隆一个repo,你根本不需要设置任何类型的隧道。要通过SSH访问github,你总是必须通过SSH连接到github ,这是被阻止的。如果github有另一个端口(而不是22)接受SSH连接,那将是很好的。但我不知道他们是否有这样的东西。