Ответ 1
Я бы попытался использовать URL-кодированное значение символа @, если вы передаете пароль в URL-адресе прокси-сервера:
http.proxy=http://userId:pwd%[email protected]:port
У меня есть git proxy config как 'http.proxy = http://userId: pwd @123 @ipaddress: port', но при клонировании удаленного проекта я получаю ошибку как
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
Как избежать символа '@' в пароле?
Примечание: я не могу изменить пароль.
Я бы попытался использовать URL-кодированное значение символа @, если вы передаете пароль в URL-адресе прокси-сервера:
http.proxy=http://userId:pwd%[email protected]:port
Примечание (ноябрь 2013 г.)
Кодирование URL (особенно любого специального символа в пароле) является правильным решением. .netrc
, упомянутый ниже, предназначен только для удаленного URL-адреса репо, а не для прокси-сервера, используемого для разрешения указанного удаленного URL-адреса репо.
Для указанной кодировки см. " Percent-encoding":
Процент кодирования, также известный как URL encoding, является механизмом кодирования информации в Uniform Resource Identifier (URI) при определенных обстоятельствах. Хотя он известен как кодировка URL, он фактически используется в основном в основном Uniform Resource Identifier (URI), который включает в себя как Uniform Resource Locator (URL) и Uniform Resource Name (URN), Таким образом, он также используется при подготовке данных типа application/x-www-form-urlencoded , что часто используется в представление HTML form данные в 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 [email protected]
Корректор, используемый Git для сцены, будет обрабатывать кодировку только штрафом, @
или no @
.
URL кодируют любые необычные символы.
@ character is %40
В моем файле конфигурации git я закодировал "просто" имя пользователя, например:
https://myemail%[email protected]/api.git
Например, ваш пароль хранится в переменной среды 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 %
echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %
$GIT_REPOSITORY
<- hello
hello
<- x68x65x6Cx6Cx6F
x68x65x6Cx6Cx6F
<- %68%65%6C%6C%6F
Вы должны кодировать в процентах | кодировать специальные символы. Например, вместо этого:
http://foo:[email protected]@http-gateway.domain.org:80
ты пишешь это:
http://foo:B%[email protected]:80
Таким образом, @
заменяется на %40
.