wake-up-neo.com

Escape @ -Zeichen im git Proxy-Passwort

Ich habe git Proxy-Konfiguration als 'http.proxy = http: // userId:pwd @ 123@ipaddress: port 'aber beim Klonen eines Remote-Projekts bekomme ich einen Fehler als 

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

Wie kann man das '@'-Zeichen im Passwort schützen? 

Hinweis: Ich kann das Passwort nicht ändern.

64
Karthik

Ich würde versuchen, den URL-kodierten Wert des @ -Symbols zu verwenden, wenn Sie das Kennwort in der Proxy-URL angeben:

http.proxy=http://userId:pwd%[email protected]:port
118
John Weldon

Hinweis (November 2013)

Die Kodierung der URL (insbesondere jedes Sonderzeichen in einem Kennwort) ist die richtige Lösung.
Der unten angegebene .netrc gilt nur für Remote-Repo-URLs, nicht für den Proxy, der zum Auflösen des Remote-Repo-URLs verwendet wird.

Informationen zu dieser Codierung finden Sie unter " Percent-Encoding ":

Die Prozentcodierung, auch bekannt als URL Encoding , ist ein Mechanismus zum Codieren von Informationen in einem Uniform Resource Identifier (URI) unter bestimmten Umständen. Obwohl es als URL-Codierung bekannt ist, wird es tatsächlich allgemeiner innerhalb des Hauptsatzes Uniform Resource Identifier (URI) verwendet, der sowohl Uniform Resource Locator (URL) als auch _ enthält. Uniform Resource Name (URN). Als solches wird es auch bei der Aufbereitung von Daten der Anwendung/x-www-form-urlencoded Medientyp verwendet, wie es häufig bei der Einreichung von HTML verwendet wird. Formular Daten in HTTP Anforderungen.

Reservierte Zeichen nach Prozentcodierung:

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

Ursprüngliche Antwort (Mai 2011)

Zwei Kommentare:

  • ein Passwort für einen Server zu haben, auf den mit http (nicht https) zugegriffen wird, ist ... merkwürdig. Das Kennwort wird während der Kommunikation zwischen Client und Server nicht verschlüsselt.

  • sie können einen .netrc (oder _netrc für Windows) in Ihrem $HOME mit folgendem Inhalt einrichten

 IP-Adresse der Maschine: Port 
 login userId 
 Kennwort pwd @ 

Die von Git benutzte Curl hinter der Szene würde die Kodierung gut verarbeiten, @ oder kein @.

48
VonC

URL kodiert ungewöhnliche Zeichen.

Liste der URL-Codes.

@ character is %40

In meiner git config-Datei habe ich beispielsweise den Benutzernamen "nur" codiert:

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

2
conal_lab24

Beispiel: Ihr Kennwort ist in der Umgebungsvariablen GIT_PASSWORD, Benutzername - GIT_USERNAME gespeichert.

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

Erklärung von: echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %

  1. Passwort drucken: $GIT_REPOSITORY <- hello
  2. Konvertieren Sie "Hallo" in Hex: hello <- x68x65x6Cx6Cx6F
  3. Ändern Sie jedes 'x' in '%': x68x65x6Cx6Cx6F <- %68%65%6C%6C%6F
1
isnullxbh

Sie müssen Prozent-Kodierung | encode die Sonderzeichen. Z.B. an Stelle von:

http://foo:[email protected]@http-gateway.domain.org:80

schreibst du das:

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

@ wird also durch %40 ersetzt.

0
Ravi Parekh