NuGet atrás de um proxy


104

Eu descobri que o NuGet permite a configuração de configurações de proxy desde a versão 1.4. Mas, não consigo encontrar nenhum exemplo de linha de comando.

Estou tentando executar uma compilação e o NuGet não consegue se conectar.

Como faço para definir as configurações de proxy na linha de comando?


1
Para o benefício de outros usuários que encontrarem problemas de proxy: Você saberá que pode ser o proxy se o NuGet exibir a mensagem: "O nome remoto não pôde ser resolvido: 'nuget.org'"
pduncan

4
Tenha o cuidado de verificar as variáveis ​​de ambiente http_proxye https_proxy, bem como as configurações de proxy do sistema
Colonel Panic

Há um problema para isso agora no github: github.com/NuGet/Home/issues/458
thekip

Respostas:


202

Veja o que fiz para fazer isso funcionar com meu proxy corporativo que usa autenticação NTLM. Eu baixei NuGet.exe e, em seguida, correu os seguintes comandos (que eu encontrei nos comentários a esta discussão no CodePlex):

nuget.exe config -set http_proxy=http://my.proxy.address:port
nuget.exe config -set http_proxy.user=mydomain\myUserName
nuget.exe config -set http_proxy.password=mySuperSecretPassword

Isso coloca o seguinte em meu NuGet.configlocalizado em %appdata%\NuGet(que mapeia para C: \ Users \ myUserName \ AppData \ Roaming em minha máquina Windows 7):

<configuration>
    <!-- stuff -->
    <config>
        <add key="http_proxy" value="http://my.proxy.address:port" />
        <add key="http_proxy.user" value="mydomain\myUserName" />
        <add key="http_proxy.password" value="base64encodedHopefullyEncryptedPassword" />
    </config>
    <!-- stuff -->
</configuration>

A propósito, isso também corrigiu meu problema com o NuGet funcionando apenas na primeira vez que acessei a origem do pacote no Visual Studio.

Observe que algumas pessoas que tentaram essa abordagem relataram através dos comentários que foram capazes de omitir a configuração da http_proxy.passwordchave da linha de comando ou excluí-la após o fato do arquivo de configuração e ainda eram capazes de ter a função NuGet através do proxy.

Se você achar, no entanto, que deve especificar sua senha no arquivo de configuração do NuGet, lembre-se de que você deve atualizar a senha armazenada na configuração do NuGet na linha de comando ao alterar seu login de rede, se suas credenciais de proxy também forem sua rede credenciais .


A linha de comando do NuGet não adicionou as entradas ao meu arquivo NuGet.config, mas depois que editei manualmente o arquivo, funcionou muito bem.
pduncan

19
No meu caso, omiti a chave http_proxy.password completamente e parecia feliz em passar minhas credenciais autenticadas do AD. Isso evita a necessidade de alterar a senha com frequência.
Sir Crispalot

5
Aviso Tenha cuidado ao usar a configuração sugerida por Arcain. Certifique-se de alterar a senha no arquivo de configuração ao alterar sua senha do Windows. Minha conta do Windows foi bloqueada aleatoriamente depois de alterar a senha de acordo com a política da empresa. Levei algumas horas para descobrir que essa entrada de configuração está causando todo o problema. A melhor opção é simplesmente remover a chave http_proxy.password sugerida por @Sir Crispalot
AJ Qarshi

3
Experimente o que Sir Crispalot mencionou e remova a chave http_proxy.password. Isso funcionou para algumas pessoas e evitou a necessidade de alterar a senha no arquivo de configuração do NuGet.
Arcain

4
Outra vitória aqui - usar essas configurações e omitir a chave da senha funcionou para mim por trás do meu proxy corporativo com autenticação NTLM.
Cᴏʀʏ

22

Talvez você possa tentar fazer isso no seu devenv.exe.config

<system.net>
    <defaultProxy useDefaultCredentials="true" enabled="true">
        <proxy proxyaddress="http://proxyaddress" />
    </defaultProxy>
    <settings>
        <servicePointManager expect100Continue="false" />
        <ipv6 enabled="true"/>
    </settings>
</system.net>

Eu encontrei no rastreador de problemas NuGet

Existem também outros comentários valiosos sobre problemas de rede do NuGet +.


2
mas isso pressupõe que o devenve.exe (Visual Studio) está instalado, o que não deve estar em um servidor de compilação
Kat Lim Ruiz

Tive que remover essa configuração para que funcionasse, de modo que siga as configurações de proxy do Internet Explorer.
Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Trabalho para mim, ele usou as configurações de proxy do sistema. Testado no WINDOWS 10
Van Thoai Nguyen

11

Caso esteja usando a versão https do nuget ( https://www.nuget.org ), lembre-se de que você deve definir os valores com https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
A senha https é um texto simples em nuget.config se você seguir o guia arcains, mas usando https
dmce

Isso corrigiu meu problema, mais detalhes aqui github.com/NuGet/Home/issues/5980 .
jpierson,

Portanto, não podemos usar 'http' para definir o endereço de proxy se estivermos usando a versão https do nuget?
codificador kemp de

8

Posso estar errado, mas achei que ele usava as configurações de proxy do IE.

Se perceber que você precisa fazer o login, ele abrirá uma caixa de diálogo e pedirá que você o faça (login).

Por favor, veja a descrição disso aqui -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
Sim - o problema com esta abordagem surge quando a política de grupo da sua empresa reverte continuamente as configurações do IE para aquelas que não funcionam com o Nuget, como acontece no meu local de trabalho
Xcalibur

5

Para qualquer pessoa que use o VS2015: Eu estava encontrando um erro "Autenticação de proxy 407 necessária", que interrompeu minha compilação. Depois de algumas horas investigando, descobriu-se que o MSBuild não estava enviando credenciais ao tentar baixar o Nuget como parte do destino 'DownloadNuGet'. A solução foi adicionar o seguinte XML a C: \ Arquivos de programas (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config dentro do <configuration>elemento:

<system.net>
            <defaultProxy useDefaultCredentials="true">
            </defaultProxy>
</system.net>

4

A solução para mim foi incluir

<configuration>
  <config>
    <add key="http_proxy" value="http://<IP>:<Port>" />
    <add key="http_proxy.user" value="<user>" />
    <add key="http_proxy.password" value="<password>" />
  </config>
</configuration>

No nuget.configarquivo.


1
Onde posso encontrar este arquivo?
Marcelo Machado

2
@MarceloMachado: Aqui:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier

localização do nuget.config do usuário no Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino

Você pode escolher fazer `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` sozinho, sem especificar o nome de usuário e a senha. Lembre-se de reiniciar o Visual Studio depois disso!
taylorswiftfan

Reiniciar o VS é importante! Além disso, acho que tive problemas ao executar como administrador (necessário para ser executado como um usuário normal?)
Marte

4

Outra opção para o mesmo "proxy para nuget": alternativamente, você pode definir as configurações de proxy do nuget para se conectar por meio do fiddler . Abaixo, o cmd salvará as configurações de proxy no arquivo de configuração nuget padrão para o usuário em%APPDATA%\NuGet\NuGet.Config

nuget config -Set HTTP_PROXY=http://127.0.0.1:8888

Sempre que você precisar do nuget para acessar a Internet, basta abrir o Fiddler, supondo que você tenha o Fiddler escutando na porta padrão 8888.

Esta configuração não é sensível a alterações de passwork porque o fiddler resolverá qualquer autenticação com o proxy up stream para você.



1

Apenas uma pequena adição ...

Se funcionar para você fornecer apenas a configuração http_proxy e não o nome de usuário e a senha, recomendo colocar as configurações de proxy em um arquivo nuget.config local do projeto e confirmá-lo no controle de origem. Dessa forma, todos os membros da equipe têm as mesmas configurações.

Crie um arquivo. \ Nuget.config vazio

   <?xml version="1.0" encoding="utf-8"?>
   <configuration>
   </configuration>

Então:

   nuget config -Set http_proxy="http://myproxy.example.com:8080" -ConfigFile .\Nuget.Config

E, finalmente, envie seu novo arquivo Nuget.config local do projeto.


0

Experimente isso . Basicamente, a conexão pode falhar se o seu sistema não confiar no certificado nuget.


0

Além das sugestões de @arcain, tive que adicionar o seguinte url do Windows Azure Content Delivery Network à lista branca do nosso servidor proxy:

.msecnd.net

0

A solução acima por @arcain Plus as etapas abaixo me resolveram o problema

  1. Modificar as "fontes de pacote" nas configurações do gerenciador de pacotes Nuget para marcar a caixa de seleção para usar as configurações nuget.org resolveu meu problema.

  2. Também mudei para usar esse (nuget.org) como a primeira escolha de fonte de pacote
    . Desmarquei as fontes de pacotes da minha empresa para garantir que o nuget sempre fosse obtido de fontes globais.


0

No Windows Server 2016 Standard, que é o que eu desenvolvo, eu só tive que abrir o Painel de Controle do Credential Manager e limpar as configurações de proxy em cache para Visual Studio que não eram mais válidas e, em seguida, reiniciar o Visual Studio. Na próxima vez que abri o Gerenciador de Pacotes Nuget, fui solicitado a fornecer credenciais de proxy, o que me fez trabalhar novamente.

Consulte: https://support.microsoft.com/en-us/help/4026814/windows-accessing-credential-manager

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.