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.
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
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 @
.
L'URL code tous les caractères inhabituels.
@ 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
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 %
$GIT_REPOSITORY
<- hello
hello
<- x68x65x6Cx6Cx6F
x68x65x6Cx6Cx6F
<- %68%65%6C%6C%6F
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
.