Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过苛刻的代理使用GitHub?_Git_Github - Fatal编程技术网

如何通过苛刻的代理使用GitHub?

如何通过苛刻的代理使用GitHub?,git,github,Git,Github,鉴于以下限制,如何从Windows和Unix使用GitHub 对internet的所有访问仅限于代理 代理仅允许在端口80和443上进行连接 仅为443启用了连接方法 需要代理身份验证(NTLM或基本) 请参阅Jeff Tchang的一篇文章(以前可从获得),其中包括Windows和Unix平台的说明,总结如下 Unix 下载Git 下载并安装 编辑或创建文件~/.ssh/config,并放置以下内容: 如果一切设置正确,您应该能够运行ssh github.com并查看 嗨,用户!您已成功通

鉴于以下限制,如何从Windows和Unix使用GitHub

  • 对internet的所有访问仅限于代理
  • 代理仅允许在端口80和443上进行连接
  • 仅为443启用了连接方法
  • 需要代理身份验证(NTLM或基本)
请参阅Jeff Tchang的一篇文章(以前可从获得),其中包括Windows和Unix平台的说明,总结如下

Unix
  • 下载Git
  • 下载并安装
  • 编辑或创建文件
    ~/.ssh/config
    ,并放置以下内容:

  • 如果一切设置正确,您应该能够运行
    ssh github.com
    并查看

    嗨,用户!您已成功通过身份验证,但GitHub不提供shell访问。
    与github.com的连接已关闭

    如果这不起作用,您可以运行
    ssh.github.com
    并获得完全相同的结果。如果第一个命令不起作用,则表示您正在使用阻止端口22上连接的代理。几乎没有代理阻止端口443上的连接,因为SSL需要它

  • 窗户
  • 下载。一些设置:
    • “从Windows命令提示符运行Git”
    • “使用OpenSSH”(这一点非常重要)
    • 选择你的行尾
  • 下载。这个工具应该有自己的帖子,主要是因为它非常简单。它镜像了开源工具corkscrew,并用于通过代理进行隧道传输。是的,该工具的名称实际上被称为“connect.c”。对于Windows用户,可以使用预编译的二进制文件。我将我的
    connect.exe
    放入
    C:\Windows\connect.exe
  • 决定使用Windows
    cmd.exe
    还是Cygwin样式的shell。或者两者兼而有之
  • 设置Cygwin Git bash shell

    对于Cygwin样式的shell,启动Git图标并编辑文件
    ~/.ssh/config
    ,确保该文件没有扩展名。将以下内容放入该文件中,并注意如何指定路径

  • 设置Windows
    cmd.exe
    shell

    假设您不喜欢Git Bash shell。您更喜欢cmd.exe解释器

    • 转到您的配置文件
      C:\Documents and Settings\.ssh\config
    • 复制一份或制作一份新的。我调用了我的
      config窗口
    将以下内容放入文件中,再次仔细注意路径分隔符和样式


  • 有关详细信息,请参见。

    我的场景与Jeff Tchang的略有不同(但基于他的帖子),但可能会有所帮助

    我们所有的工作场所/公司互联网访问都是通过非认证代理进行的。我可以从中克隆,但不能推送到github:running

    git push -u origin master
    
    会回来吗

    ssh: connect to host github.com port 22: Operation timed out
    fatal: The remote end hung up unexpectedly
    
    基于和,我能够下载/安装开塞钻并将以下内容添加到我的~/.ssh/config中:

    Host github.com
      User git
      Port 22
      Hostname github.com
      TCPKeepAlive yes
      IdentitiesOnly yes
      ProxyCommand /usr/local/bin/corkscrew proxy.<my-workplace>.com 8080 %h %p 
    
    Host github.com
    用户git
    端口22
    主机名github.com
    是的
    唯一相同的是
    ProxyCommand/usr/local/bin/corkscrew proxy..com 8080%h%p
    
    需要注意的几点:

    • 我将我的工作场所/公司私钥也用于GitHub:如果不使用,则需要添加一行“IdentityFile”

    • 与Jeff Tchang不同(多亏了mtu.net),我不需要在proxy命令行的末尾使用“~/.ssh/myauth”

    • 我不需要设置ssh.github.com主机部分


    希望这些帮助。

    [由于我对上面给出的第一个答案的添加没有在四天内获得批准,因此我将其放在这里。]

    请注意,
    corkscrew
    connect
    以及标准Unix命令
    nc
    仅支持基本身份验证(不安全地传输密码)。
    此外,还支持摘要身份验证

    如果您的代理需要NTLM身份验证,则所有这些命令可以很好地结合使用,如下所示:

    选择
    cntlm
    将侦听的本地端口(如下面示例中的8080) (使用代理执行用户身份验证并转发任何 进一步的包到/从代理),设置端口等(例如,在
    /etc/cntlm.conf
    ),并使用以下命令代替上面给出的PROXY命令(插入相应的端口号):

    ProxyCommand螺旋塞127.0.0.1 8080%h%p

    ProxyCommand connect-H 127.0.0.1:8080%H%p

    ProxyCommand nc-X connect-X 127.0.0.1:8080%h%p

    ProxyCommand隧道身份验证-p 127.0.0.1:8080-r%h:%p


    我想补充一点,对于NTLM身份验证,您可以使用CNTLM。大多数公司代理都允许基本身份验证,但有些代理确实非常严格,只允许NTLM。请在此处找到:
    connect.exe
    作为msysgit的一部分安装。它包括在我的书包里。你能帮我一下吗-
    git push -u origin master
    
    ssh: connect to host github.com port 22: Operation timed out
    fatal: The remote end hung up unexpectedly
    
    Host github.com
      User git
      Port 22
      Hostname github.com
      TCPKeepAlive yes
      IdentitiesOnly yes
      ProxyCommand /usr/local/bin/corkscrew proxy.<my-workplace>.com 8080 %h %p