Powershell'de proxy yapılandırması


4

Chocolatey'i bir proxy'nin arkasındaki pencerelere kurmaya çalışıyorum:

@powershell -ExecutionPolicy unrestricted

Güç kabuğunda çalıştırıyorum

$wc=new-object net.webclient;
$wc.Proxy=new-object system.net.WebProxy('<myproxy-ip>:8012',$true);
$wc.Proxy.Credentials = new-object system.net.NetworkCredential('<myusername>','<mypass>');
iex ($wc.DownloadString('https://chocolatey.org/install.ps1'));

Aşağıdaki hatayı alıyorum

Exception calling "DownloadString" with "1" argument(s): "The remote server returned an error: (407) Proxy Authentication Required."
At line:1 char:1
+ iex ($wc.DownloadString('https://chocolatey.org/install.ps1'));
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException

Firefox / iexplorer'ı başlatırken girmem gereken aynı kullanıcı adını / şifreyi kullanıyorum (resme bakın). Her zaman girmem gerektiğinden, proxy için yapılandırılmış varsayılan kullanıcı adı / parola yoktur.

enter image description here


Daha fazla ayrıntı (Firefox'ta Özel Bir Pencerede İnceleme Elemanı kullanarak)

Yanıt Başlıkları

Cache-Control: no-cache
Connection: close
Content-Length: 813
Content-Type: text/html; charset=utf-8
Pragma: no-cache
Proxy-Authenticate: BASIC realm="PROXY_INTERNET"
Proxy-Connection: close
Set-Cookie: BCSI-CS-dfaeac52a135c7c0=2; Path=/

.Net kimlik bilgileri, tarayıcı tabanlı bir proxy kimlik doğrulama ekranına gireceğiniz ad ve parola ile aynı değildir. FF veya IE kullanırken vekilinizi ve BM / Parolanızı nasıl girdiğinizi açıklayabilirsiniz.
Ƭᴇcʜιᴇ007

@ Ƭᴇcʜιᴇ007 Umarım görüntünün vekil türünü belirlemede yardımcı olur.
raisercostin

Hayır, bu yeterli değil. Proxy'nin kimlik doğrulama istediği HTTP yanıt başlıklarına ihtiyacımız var.
Daniel B

Yanıt başlıklarını tarayıcıdan ekledim. Powershell'de nasıl cevap hata ayıklayabileceğimi ya da cevap başlıklarını nasıl yakalayabileceğimi bilmiyorum. Hiç önerin var mı?
raisercostin

Yukarıdaki örnek Windows 7'de bir NTLM proxy'sinin arkasında benim için iyi çalıştı :) teşekkürler.
Tod Thomson

Yanıtlar:


0

Test edemiyorum (benim için uygun bir Proxy yok), bu yüzden bunun işe yarayıp yaramayacağını bilmiyorum, ama işte deneyebileceğiniz bir şey var:

$wc = new-object net.webclient;
$proxyUri = new-object system.uri("http://<myproxy-ip>:8012");
$wc.Proxy = new-object system.net.WebProxy($proxyUri, $true);
$cachedCredentials = new-object system.net.CredentialCache;
$netCredential = new-object system.net.NetworkCredential("<myusername>", "<mypass>");

$cachedCredentials.Add($proxyUri, "Basic", $netCredential);

$wc.Proxy.Credentials = $cachedCredentials.GetCredential($proxyUri, "Basic");

iex ($wc.DownloadString("https://chocolatey.org/install.ps1"));

Amaç, kimlik bilgilerini "Temel" kimlik doğrulama modunu kullanmaya zorlamak için bir CredentialCache nesnesi kullanmaktır.


0

Görmek https://github.com/chocolatey/chocolatey/wiki/Proxy-Settings-for-Chocolatey

Powershell'de işlevi tanımlayın

function Create-Proxy($proxyHost,$proxyPort,$proxyUsername,$proxyPassword){
    #$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
    $proxyUrl = $proxyHost+":"+$proxyPort;
    Write-Host "proxy url [$proxyUrl]";
    $proxy = New-Object System.Net.WebProxy($proxyUrl, $true);
    $passwd = ConvertTo-SecureString $proxyPassword -AsPlainText -Force; ## Website credentials
    $proxy.Credentials = New-Object System.Management.Automation.PSCredential ($proxyUsername, $passwd);
    return $proxy;
}

gibi ara

$wc=new-object net.webclient;
$wc.UseDefaultCredentials = $true
$wc.Proxy = Create-Proxy "<proxy-host>" "<proxy-port>" "<proxy-username>" "<proxy-clear-pass>"
$wc.DownloadString('https://chocolatey.org/install.ps1');

Keşfettiğim şey asıl indirmenin işe yaradığı, ancak yükleyicinin yürütülmesi, özel olarak oluşturulmuş bir proxy kullandığından bu yana kullanılmadı.

Böylece iex ($wc.DownloadString("https://chocolatey.org/install.ps1")); indirilen içindeki kötü proxy yapılandırması nedeniyle başarısız oluyor install.ps1


0

Bunu kullanabilirsin. Benim için çalıştı. https://github.com/chocolatey/choco/wiki/Proxy-Settings-for-Chocolatey

Açık Proxy Ayarları

Chocolatey, 0.9.9.9 ile başlayan açık proxy desteğine sahip.

Basitçe 1 veya 3 ayarları yapılandırabilirsiniz ve Chocolatey bir proxy sunucusu kullanacaktır. proxy gereklidir ve proxy sunucusunun yeri ve bağlantı noktasıdır. proxyUser ve proxyPassword isteğe bağlıdır. Kullanıcı / şifre değerleri sadece her ikisi de mevcut olduğunda kimlik bilgileri için kullanılır.

choco config set proxy <locationandport>
choco config set proxyUser <username>
choco config set proxyPassword <passwordThatGetsEncryptedInFile>

Örnek

Aşağıdaki komutları 0.9.9.9'da çalıştırmak:

choco config set proxy http://localhost:8888
choco config set proxyUser bob
choco config set proxyPassword 123Sup#rSecur3

Bu cevap Chocolatey'in bir proxy kullanması için nasıl yapılandırıldığını açıklar. Soru nasıl yapılacağını sorar kurmak Bir vekil arkasından çikolata. Bu cevap bundan sonra faydalı olacak, ama sorunun sorduğu şey bu değil.
anaximander
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.