2011-05-30 19 views
47

Tengo la configuración de proxy git como 'http.proxy = http: // userId: pwd @ 123 @ipaddress: puerto' pero al clonar un proyecto remoto, recibo un error comoEscape @ character en contraseña de proxy git

Cloning into git... 
error: Couldn't resolve proxy '[email protected]' while accessing http://git.kernel.org/pub/scm/git/git.git/info/refs 

fatal: HTTP request failed 

cómo escapar el carácter '@' en la contraseña?

Nota de Pls: No puedo cambiar la contraseña.

Respuesta

91

que iba a tratar con el valor codificado URL del símbolo @ si estás pasando la contraseña en el URL del proxy:

http.proxy=http://userId:pwd%[email protected]:port 
+0

Esto funciona para mí cuando se utiliza una contraseña en una url hg. –

+0

Gracias, funcionó en git. – Karthik

+1

Estoy tratando de hacer este mismo truco pero con 'git clone http: // usuario: pwd% [email protected] ip: port' y no funciona. ¿Entonces supongo que git no usa curl en esta situación? –

33

Nota (noviembre de 2013)

que codifica la url (especialmente cualquier carácter especial en una contraseña) es la solución correcta.
El .netrc mencionan a continuación es sólo para la url de recompra a distancia, no para el proxy utiliza para resolver dicho url repo remoto.

para dicha codificación, ver "Percent-encoding":

Porcentaje-codificación, también conocida como URL encoding, es un mecanismo para la codificación de información en un Uniform Resource Identifier (URI) bajo ciertas circunstancias. Aunque se conoce como codificación URL, de hecho se usa de manera más general dentro del conjunto principal Uniform Resource Identifier (URI), que incluye tanto Uniform Resource Locator (URL) como Uniform Resource Name (URN). Como tal, también se utiliza en la preparación de datos de la aplicación/x-www-form-urlencoded media type, como se utiliza a menudo en la presentación de datos HTMLform en HTTP solicitudes.

caracteres se conservan después de código porciento: Respuesta

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

original (Mayo 2011)

Dos observaciones:

  • que tienen una contraseña para un servidor de acceso con http (no https) es ... extraño. La contraseña no se cifra durante las comunicaciones entre el cliente y el servidor;

  • usted puede configurar un .netrc (o _netrc para Windows) en su $HOME, con el siguiente contenido

 
    machine ipaddress:port 
    login userId 
    password [email protected] 

El rizo utilizado por Git bbehind la escena se ocuparía de la codificación muy bien, @ o no @.

+0

Gracias por ur respuestas. El servidor era una unidad de red en la que solo yo y otros 2 desarrolladores estaríamos usando. Entonces creo que no hay necesidad de encriptación. Y intentaré usar netrc alguna vez. – Karthik

+0

@Karthik: que le permitirá utilizar simplemente: 'http: // 123 @ direcciónip: puerto/...' como una dirección de clonación, sin tener que agregar la información de usuario y contraseña. – VonC

+0

@VonC buena actualización de la respuesta, no lo noté hasta ahora :) –