在git代理密码中转义@字符

时间:2011-05-30 05:53:02

标签: git msysgit

我有git代理配置为'http.proxy = http:// userId: pwd @ 123 @ipaddress:port'但是在克隆远程项目时,我收到错误

Cloning into git...
error: Couldn't resolve proxy '123@ipaddress' while accessing http://git.kernel.org/pub/scm/git/git.git/info/refs

fatal: HTTP request failed

如何在密码中转义'@'字符?

请注意:我无法更改密码。

5 个答案:

答案 0 :(得分:123)

如果您在代理网址中传递密码,我会尝试使用@符号的URL编码值:

http.proxy=http://userId:pwd%40123@ipaddress:port

答案 1 :(得分:52)

注(2013年11月)

编码网址(特别是密码中的任何特殊字符)是正确的解决方案 下面提到的.netrc仅用于远程repo url,而不是用于解析所述远程repo url的代理。

对于所述编码,请参阅“Percent-encoding”:

  

百分比编码,也称为URL encoding,是在某些情况下对Uniform Resource Identifier(URI)中的信息进行编码的机制。虽然它被称为URL编码,但它实际上更常用于主Uniform Resource Identifier(URI)集合,其中包括Uniform Resource Locator(URL)和Uniform Resource Name(URN)。因此,它也用于准备application / x-www-form-urlencoded media type的数据,这在HTML form数据的提交中经常使用{ {3}}请求。

     

百分比编码后的保留字符:

!   #   $    &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

原始答案(2011年5月)

两条评论:

  • 拥有使用http(而不是https)访问的服务器的密码是......很奇怪。在客户端和服务器之间的通信期间,密码未加密;

  • 您可以在.netrc中设置_netrc(或$HOME for Windows),内容如下

    machine ipaddress:port
    login userId
    password pwd@

Git b在场景后面使用的卷曲会很好地处理编码,@或没有@

答案 2 :(得分:2)

URL编码任何不寻常的字符。

List of url codes.

@ character is %40

在我的git配置文件中,我已经编码了“仅”用户名,例如:

https://myemail%40gmail.com@myrepo.org/api.git

答案 3 :(得分:1)

例如,您的密码存储在环境变量def random_chunk(a, min_chunk=1, max_chunk=5): it = iter(a) while True: nxt = list(islice(it,randint(min_chunk,max_chunk))) if nxt: yield nxt else: break # It is an example I want. a = [1,2,3,4,5] b = [6,7,8,9,10] c = [11,12,13,14,15] k = list(random_chunk(a)) b = list(random_chunk(b)) c = list(random_chunk(c)) #print [[1,2],[3],[4,5]] <- a [[6,7],[8],[9,10]] <- b [[11,12],[13],[14,15]] <- c or [[1,2,3],[4],[5]] [[6,7,8],[9],[10]] [[11,12,13],[14],[15]] 中,用户名-GIT_PASSWORD,然后:

GIT_USERNAME

说明:git clone http://${GIT_USERNAME}:$(echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %)@repository.git

  1. 打印密码:echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x % <-$GIT_REPOSITORY
  2. 将“ hello”转换为十六进制:hello <-hello
  3. 将每个“ x”更改为“%”:x68x65x6Cx6Cx6F <-x68x65x6Cx6Cx6F

答案 4 :(得分:0)

您必须percent-encode | encode特殊字符。例如。代替这个:

http://foo:B@r@http-gateway.domain.org:80

您这样写:

http://foo:B%40r@http-gateway.domain.org:80

因此@%40取代了。