web-dev-qa-db-fra.com

Echap @ caractère dans le mot de passe proxy git

J'ai git proxy config comme 'http.proxy = http: // userId:pwd @ 123@ ipaddress: port 'mais lors du clonage d'un projet distant, le message d'erreur suivant s'affiche: 

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

Comment échapper au caractère '@' dans le mot de passe? 

Remarque: je ne peux pas changer le mot de passe.

64
Karthik

J'essaierais d'utiliser la valeur URL encodée du symbole @ si vous passez le mot de passe dans l'URL du proxy:

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

Note (novembre 2013)

Encoder l'URL (en particulier tout caractère spécial dans un mot de passe) est la bonne solution.
Le .netrc mentionné ci-dessous est uniquement destiné à l’URL de dépôt distant, pas au proxy utilisé pour résoudre l’URL de dépôt à distance.

Pour ledit codage, voir " codage en pourcentage _":

Le pourcentage de codage, également appelé URL codage , est un mécanisme permettant de coder des informations dans un identificateur de ressource uniforme (URI) dans certaines circonstances. Bien qu’il soit connu sous le nom de codage d’URL, il est en fait utilisé plus généralement dans l’ensemble principal identificateur de ressource uniforme } _ (URI), qui inclut à la fois localisateur de ressources uniforme (URL) et Nom de ressource uniforme } (URN). En tant que tel, il est également utilisé dans la préparation des données de l'application/x-www-form-urlencoded type de support , comme il est souvent utilisé dans la soumission de HTMLformulaire données dans HTTP demandes.

Caractères réservés après le codage en pourcentage:

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

Réponse originale (mai 2011)

Deux commentaires:

  • avoir un mot de passe pour un serveur accédé avec http (pas https) est ... étrange. Le mot de passe n'est pas crypté lors des communications entre le client et le serveur.

  • vous pouvez configurer un .netrc (ou _netrc pour Windows) dans votre $HOME, avec le contenu suivant

 adresse ip de la machine: port 
 login userId 
 mot de passe pwd @ 

La boucle utilisée par Git derrière la scène gèrerait très bien l’encodage, @ ou pas @.

48
VonC

L'URL code tous les caractères inhabituels.

Liste des codes URL.

@ character is %40

Dans mon fichier de configuration git, j'ai encodé 'juste' le nom d'utilisateur, par exemple:

https://myemail%[email protected]/api.git

2
conal_lab24

Par exemple, votre mot de passe est stocké dans la variable d'environnement GIT_PASSWORD, nom d'utilisateur - GIT_USERNAME, puis:

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

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

  1. Mot de passe d'impression: $GIT_REPOSITORY <- hello
  2. Convertissez 'bonjour' en hexadécimal: hello <- x68x65x6Cx6Cx6F
  3. Remplacez chaque 'x' par '%': x68x65x6Cx6Cx6F <- %68%65%6C%6C%6F
1
isnullxbh

Vous devez encoder en pourcentage | encoder les caractères spéciaux. Par exemple. au lieu de cela:

http://foo:B@[email protected]:80

vous écrivez ceci:

http://foo:B%[email protected]:80

Donc, @ est remplacé par %40.

0
Ravi Parekh