我有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
如何在密码中转义'@'字符?
请注意:我无法更改密码。
答案 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编码任何不寻常的字符。
@ 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
echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %
<-$GIT_REPOSITORY
hello
<-hello
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
取代了。