Escape @ carácter en la contraseña del proxy git

4 minutos de lectura

Tengo la configuración de git proxy como ‘http.proxy=http://userId:pwd@123@ipaddress:port’ pero al clonar un proyecto remoto, recibo un error como

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

¿Cómo escapar del carácter ‘@’ en la contraseña?

Tenga en cuenta: no puedo cambiar la contraseña.

Escape @ caracter en la contrasena del proxy git
Juan Weldon

Intentaría usar el valor codificado en URL del símbolo @ (%40) si está pasando la contraseña en la URL del proxy:

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

  • Estoy tratando de hacer este mismo truco pero con ‘git clon usuario:pwd%40123@ip:puerto‘ y no funciona. Entonces, ¿supongo que git no usa curl en esta situación?

    – José Garvin

    23 de febrero de 2012 a las 16:59

  • interesante… no estoy seguro. Probablemente valga la pena intentar ver lo que realmente se envía a través del cable en este caso.

    – John Weldon

    23 de febrero de 2012 a las 17:27

  • Esto me ayudó. Debe codificar por URL por separado tanto el nombre como la contraseña. Esto le ayudará a evitar cualquier problema con caracteres especiales. Por ejemplo, puede haber un signo “:” que también generará problemas.

    – Stalinko

    18 de marzo de 2016 a las 6:45

  • Esto también es genial cuando tiene ‘@’ en el nombre de usuario, por ejemplo, cuando tiene direcciones de correo electrónico como nombres de usuario.

    – Ramdesh

    7 sep 2016 a las 11:01

  • Muchas gracias por resolver mi problema después de dos días de lucha… realmente difícil encontrar la razón de este tipo de problema.

    – lleiou

    1 de febrero de 2018 a las 2:42

Escape @ caracter en la contrasena del proxy git
VonC

Nota (noviembre de 2013)

Codificar la URL (especialmente cualquier carácter especial en una contraseña) es la solución correcta.
los .netrc mencionado a continuación es solo para la URL del informe remoto, no para el proxy utilizado para resolver dicha URL del informe remoto.

Para dicha codificación, consulte “codificación porcentual“:

Codificación porcentual, también conocida como URL codificaciónes un mecanismo para codificar información en un Identificador uniforme de recursos (URI) en determinadas circunstancias. Aunque se conoce como codificación de URL, de hecho, se usa de manera más general dentro de la principal Identificador uniforme de recursos (URI), que incluye tanto Localizador Uniforme de Recursos (URL) y Nombre de recurso uniforme (URNA). Como tal, también se utiliza en la preparación de datos de la aplicación/x-www-form-urlencoded tipo de mediocomo se usa a menudo en la presentación de HTML formulario datos en HTTP peticiones.

Caracteres reservados después de la codificación porcentual:

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

Respuesta original (mayo de 2011)

Dos comentarios:

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

  • podrías configurar un .netrc (o _netrc para Windows) en su $HOMEcon el siguiente contenido

    machine ipaddress:port
    login userId
    password pwd@

El curl utilizado por Git detrás de la escena manejaría la codificación muy bien, @ o no @.

  • Gracias por sus respuestas. El servidor era una unidad de red donde solo yo y otros 2 desarrolladores usaremos. Así que creo que no hay necesidad de encriptación. E intentaré usar netrc en algún momento.

    – Karthik

    30 de mayo de 2011 a las 9:01

  • @Karthik: eso te permitirá simplemente usar: http://123@ipaddress:port/... como una dirección de clonación, sin tener que agregar información de usuario y contraseña.

    – VoC

    30 de mayo de 2011 a las 9:19

Escape @ caracter en la contrasena del proxy git
conal_lab24

La URL codifica cualquier carácter inusual.

Lista de códigos de URL.

@ character is %40

En mi archivo de configuración de git, he codificado ‘solo’ el nombre de usuario, por ejemplo:

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

1646947927 476 Escape @ caracter en la contrasena del proxy git
esnullxbh

Por ejemplo, su contraseña almacenada en la variable de entorno GIT_PASSWORDnombre de usuario – GIT_USERNAMEluego:

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

Explicación de: echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %

  1. Imprimir contraseña: $GIT_PASSWORD <- hello
  2. Convierta ‘hola’ a hexadecimal: hello <- x68x65x6Cx6Cx6F
  3. Cambie cada ‘x’ a ‘%’: x68x65x6Cx6Cx6F <- %68%65%6C%6C%6F

1646947927 88 Escape @ caracter en la contrasena del proxy git
Ravi Parek

Tienes que codificación porcentual | codificar los caracteres especiales. Por ejemplo, en lugar de esto:

http://user:Pa@s@http-gateway.domain.org:80

escribes esto:

http://user:Pa%40s@http-gateway.domain.org:80

Entonces @ se reemplaza con %40.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad