Escape @ символ в пароле Git Proxy - PullRequest
69 голосов
/ 30 мая 2011

У меня git proxy config как 'http.proxy = http://userId:pwd@123@ipaddress:port', но при клонировании удаленного проекта я получаю сообщение об ошибке как

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

Как экранировать символ' @ 'в пароле?

Примечание: не могу сменить пароль.

Ответы [ 5 ]

127 голосов
/ 30 мая 2011

Я бы попробовал использовать кодированное значение URL символа @, если вы передаете пароль в URL-адресе прокси:

http.proxy=http://userId:pwd%40123@ipaddress:port
53 голосов
/ 30 мая 2011

Примечание (ноябрь 2013 г.)

Кодировка URL (особенно любой специальный символ в пароле) является правильным решением.
.netrc, упомянутый ниже, предназначен только для URL удаленного репо, но не для прокси, используемого для разрешения указанного URL удаленного репо.

Для указанного кодирования см. " Процентное кодирование ":

Кодирование процентов, также известное как URL кодировка , - это механизм для кодирования информации в Унифицированный идентификатор ресурса (URI) при определенных обстоятельствах. Хотя он известен как кодировка URL, на самом деле он используется более широко в основном наборе Uniform Resource Identifier (URI), который включает в себя Uniform Resource Locator (URL) и Унифицированное имя ресурса (URN). Как таковой, он также используется при подготовке данных приложения / x-www-form-urlencoded тип носителя , как это часто используется при представлении HTML форма данные в HTTP запросах.

Зарезервированные символы после кодировки процента:

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

Оригинальный ответ (май 2011 г.)

Два комментария:

  • иметь пароль для сервера, доступ к которому осуществляется через http (не https) ... странно. Пароль не шифруется при обмене данными между клиентом и сервером;

  • вы можете настроить .netrc (или _netrc для Windows) в вашем $HOME со следующим содержимым

    machine ipaddress:port
    login userId
    password pwd@

Скручивание, используемое Git за сценой, будет нормально обрабатывать кодировку, @ или нет @.

4 голосов
/ 14 ноября 2018

URL кодирует любые необычные символы.

Список кодов URL.

@ character is %40

В моем файле конфигурации git я закодировал 'просто' имя пользователя, например:

https://myemail%40gmail.com@myrepo.org/api.git
1 голос
/ 28 ноября 2018

Например, ваш пароль хранится в переменной среды GIT_PASSWORD, имя пользователя - GIT_USERNAME, затем:

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

Объяснение: echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %

  1. Печать пароля: $GIT_REPOSITORY <- <code>hello
  2. Преобразовать 'привет' в гекс: hello <- <code>x68x65x6Cx6Cx6F
  3. Заменить каждый 'x' на '%': x68x65x6Cx6Cx6F <- <code>%68%65%6C%6C%6F
0 голосов
/ 06 февраля 2019

Вы должны кодировать проценты | кодирует специальные символы. Например. вместо этого:

http://foo:B@r@http-gateway.domain.org:80

Вы пишете это:

http://foo:B%40r@http-gateway.domain.org:80

То есть @ заменяется на %40.

...