Ruby Mücevherlerini Proxy (ISA-NTLM) arkasından nasıl güncelleyebilirim


232

Arkamdaki güvenlik duvarı Microsoft ISA sunucusunu yalnızca NTLM modunda çalıştırıyor. Hash kimse Ruby SSPI gem veya başka bir yöntemle yüklemek / güncellemek için Ruby taşlarını elde başarı elde var mı?

... yoksa ben sadece tembel miyim?

Not: rubysspi-1.2.4 çalışmıyor.

Bu, IronRuby projesinin bir parçası olan "igem" için de geçerlidir.


Çalışmak için rubysspi aldım, ama çok fazla uğraşmak gerekiyor. Bir Git Bash kabuğundan kullanmak istiyorsanız, .bashrc dosyanıza şu şekilde bir takma ad eklemeniz gerekir:alias gem='ruby -rspa `which gem`'
iconoclast

1
Bu yanıtların çoğunda adımları sudo-Esudo -E doSomething
uyguladıktan

Yanıtlar:


214

Benimkini komut satırı anahtarından çalıştıramadım ama bunu sadece HTTP_PROXYortam değişkenimi ayarlayarak yapabildim . (Davanın önemli göründüğüne dikkat edin). İçinde böyle bir çizgi olan bir toplu iş dosyası var:

SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%

Açıkça bu satıra gelmeden önce referans alınan dört değişkeni ayarladım. Örnek olarak kullanıcı adım "wolfbyte" ise, şifrem "gizli" ve proxy'im "pigsy" olarak adlandırılır ve 8080 numaralı bağlantı noktasında çalışır:

SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080

Bunu nasıl yönettiğinize dikkat etmek isteyebilirsiniz, çünkü şifrenizi makinenin oturumunda düz metin olarak saklar, ancak bunun çok fazla bir sorun olması gerektiğini düşünmüyorum.


6
'Gem', ister http_proxy env var ister --http-proxy argümanı olsun, proxy dizesindeki ters eğik çizgileri tanımıyor gibi görünüyor. örneğin Ubuntu kutumdan --http-proxy http: // domain \\ userid @ server: port bana şu hatayı veriyor: "geçersiz argüman: --http-proxy ..."; Neyse ki, proxy sunucum etki alanı belirtimi gerektirmedi ve gem onsuz çalıştı.
spoulson

ISA, yöneticinin kimlik doğrulaması yapmak için varsayılan bir alan adı belirtmesine izin verir. Etki alanını dışarıda bırakmayı deneyebilir ve yalnızca spoulson'un önerdiği gibi kullanıcı adınızı kullanabilirsiniz. ISA yöneticiniz söz konusu varsayılan etki alanını belirttiyse ve kullanıcı hesabınız bu etki alanındaysa, bu sizin için çalışmalıdır (güvenlik duvarında engelleme kuralları olmadığı varsayılarak)
squillman

11
@spoulson Etki alanına ihtiyacınız varsa ters eğik çizgiyi URI kodlamanız gerekir, örn. http: // domain% 5Cuserid @ server: port.
Ian G

13
FYI, Windows'ta set http_proxy satırını gem.bat dosyasına ekleyebilirsiniz, böylece proxy'yi her seferinde ayarlamayı hatırlamanız gerekmez.
Ed Manet

1
Bu arada, şifreniz özel simgeler içeriyorsa, bunları kodlamanız gerekir. Örneğin @, %40vs ile değiştirin
Andrey Regentov

221

Windows işletim sistemi için, Fiddler'ı bu soruna geçici bir çözüm bulmak için kullandım.

  1. Www.fiddler2.com adresinden Fiddler'i kurun / çalıştırın
  2. Mücevher çalıştırın:

    $ gem install --http-proxy http://localhost:8888 $gem_name

3
Bir tedavi çalıştı, ntlmaps ve cntlm'den çok daha kolay.
atom

36
Bu benim için çalıştı. Fiddler'ın her durumda gerekli olmadığını unutmayın. Sadece gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_namebenim için gerekli olduğunu hepsi bu.
Polaris878

Windows 7'de --http-proxy bayrağı değerli taş adından sonra gelmelidir, örneğin gem yükleme <kullanıcıadı> --http-proxy yourproxy.address; bağlantı noktası . Aksi takdirde, geçersiz bir komut satırı anahtarından şikayet eder.
Alek Davis

Windows 10 üzerinde çalışıyor
ggiunta

Kurumsal bir vekilin arkasında benim için çalışan bu oldu. Kemancıya gerek yok. Örneğin jekyll gem yüklemek için sadece çalıştırın: sudo gem install jekyll --http-proxy=http://web-proxy.company.com:8080
Joseph

129

Bu tamamen işe yaradı:

gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name

15
Bu en güncel cevaptır, pencerelerle de çalışır. Kullanıcı adımı ve şifremi de eklemek zorunda kaldım: gem install --http-proxy http: // [ kullanıcı ]: [ şifre ] @ [ sunucu ]: [ bağlantı noktası ]
vanderwyst

Jekyll yükleyemedim ve almaya devam etti SSL_connect SYSCALL returned=5 errno=0 state=unknown state (https://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/jekyll-3.0.0.gemspec.rz). Bu benim için çalıştıgem install --http-proxy http://127.0.0.1:8580 jekyll
Majid Fouladpour

Bash profilime bir takma ad ekledim: alias geminstall='gem install --http-proxy ${http_proxy}'hayatımı kolaylaştırmak için.
bgStack15

48

İş yerinde cntlm ( http://cntlm.sourceforge.net/ ) kullanıyorum . Yapılandırma ntlmaps'a çok benzer.

Harika çalışıyor ve ayrıca Ubuntu kutumu ISA proxy'sine bağlamamı sağlıyor.

Check out http://cntlm.wiki.sourceforge.net/ fazla bilgi için


2
Bu, denenenlerin en az acı veren yoludur. Ubuntu / Debian üzerinde, apt-get install cntlm yapıyorum, config'i düzenleyip http_proxy = " localhost: 3128 " dosyasını dışa aktarıyorum . İşler!
Konrads

Pencerelerde de mükemmel çalışır. Teşekkürler!
Subrat Pattnaik

38

Bu çözümlerden bazılarını denedim ve hiçbiri işe yaramadı. Sonunda benim için çalışan bir çözüm buldum:

gem install -p http://proxy_ip:proxy_port rails

-pproxy'yi iletmek için parametreyi kullanma . Gem 1.9.1 sürümünü kullanıyorum.


1
Proxy bölümünü kullanıcı
Gary Tsui

Çalışmak proxy_ipiçin httpsbağlantılar için kullanılan eklemek zorunda kaldım ! Büyük: D (mücevher versiyonu 2.0.14)
madlymad

18

Aşağıdakileri içeren bir .gemrc dosyası (/ etc / gemrc veya ~ / .gemrc'de veya / opt / chef / katıştırılmış / etc / gemrc içindeki şef taşıyla) oluşturun:

http_proxy: http://proxy:3128

O zaman gem installher zamanki gibi yapabilirsiniz .


--http-proxyBir .gemrcdosya ile çalışıyor ancak bir dosya ile çalışmıyorsa , sudokonfigürasyondan gelebilir . /etc/sudoersEklemek için dosyayı kontrol etmek zorunda kaldım : Defaults env_keep = "http_proxy ftp_proxy"önce:Defaults env_reset
DependencyHell

16

Bu sorunumu mükemmel bir şekilde çözdü:

gem install -p http://proxy_ip:proxy_port compass

Kullanıcı adınızı ve şifrenizi buna eklemeniz gerekebilir:

gem install -p http://[username]:[password]@proxy_ip:proxy_port compass

11

Proxy'niz aracılığıyla kimlik doğrulaması yapma konusunda sorun yaşıyorsanız, ortam değişkenlerini tam olarak aşağıdaki biçimde ayarladığınızdan emin olun:

set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password

user:password@Sözdizimi çalışmaları görünmüyor ve yığın taşması ve çeşitli forum yazılarda dolaşan bazı kötü adlı bir ortam değişken vardır.

Ayrıca değerli taşlarınızın indirilmesinin biraz zaman alabileceğini unutmayın. İlk başta işe yaramadığını düşündüm ama biraz sabırla beklendiği gibi indirmeye başladılar.


Benjamin Wootton'un ipucunu almak, şirket LAN'ına bağlı Windows 7 dizüstü bilgisayarımda harika çalıştı. DOS komut isteminde komut satırı penceresinde HTTP_PROXY'yi http: // localhost: 8888 (boşlukları yoksay) olarak ayarladım ve ardından HTTP kullanıcı adı ve Parolamı sırasıyla HTTP_PROXY_USER ve HTTP_PROXY_PASS için kullandım.
raycarr

8

Yukarıdaki tüm çözümleri denedim, ancak hiçbiri işe yaramadı. Linux / macOS kullanıyorsanız, ssh tüneli üzerinde tsocks kullanmanızı öneririm. Bu kurulumun çalışması için ihtiyacınız olan şey ssh ile giriş yapabileceğiniz bir makinedir ve buna ek olarak tsocks adı verilen bir program yüklüdür.

Buradaki fikir, SSH (bir socks5 proxy'si) üzerinden dinamik bir tünel oluşturmaktır. Daha sonra bu tüneli kullanmak ve uygulamalarımızı başlatmak için tsocks'u yapılandırıyoruz, bu durumda:

tsocks gem install ...

veya raylar 3.0'ı hesaba katmak için:

tsocks bundle install

Daha ayrıntılı bir kılavuz şu adreste bulunabilir:

http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/

Ubuntu için yazılmasına rağmen, prosedür tüm Unix tabanlı makineler için geçerli olmalıdır. Windows için tsocks'a bir alternatif FreeCap'tir ( http://www.freecap.ru/eng/ ). Windows üzerinde uygun bir SSH istemcisine macun denir.


Makaleyi yedeklemelerimde buldum ve aynı URL ile yeniden yayınladım.
ByScripts

1
URL hala mevcut değil. Site dışı, Yığın Değişim Olmayan bir siteye bağlantı sağlarken, dikkat çekici kısımları burada özetleyin ve bu siteye kredi verin. Bu şekilde, bağlantı koptuğunda, önemli kısım hala buradadır.
Teneke Adam

7

Bu konuyla ilgili gönderiler bol ve diğerlerinin farklı çözümler denemek için saatlerce tasarruf etmelerine yardımcı olmak için, saatler süren müdahalelerimin nihai sonucu.

Şu anda internet çevresinde üç çözüm: rubysspi apserver cntlm

rubysspi, Win32Api kitaplığına dayandığı için yalnızca bir AFAIK Windows makinesinden çalışır. Yani bir proxy üzerinden çalıştırmaya çalışan bir Windows kutusunda iseniz, bu sizin için bir çözümdür. Linux dağıtımındaysanız, şansınız kalmaz.

apserver ölü bir proje gibi görünüyor. Gördüğüm yayınlarda listelenen bağlantı, sourceforge'da 404 sayfaya yönlendiriyor. Sourceforge "apserver" için arama hiçbir şey döndürür.

Http://cntlm.awk.cz/ adresine yönlendirmeler gördüğüm cntlm için sourceforge bağlantısı , ancak bu zaman aşımına uğradı . Sourceforge'da yapılan bir arama bu bağlantıyı açar, bu da işe yarar: http://sourceforge.net/projects/cntlm/

Cntlm'i indirip yapılandırdıktan sonra proxy aracılığıyla bir mücevher yüklemeyi başardım, bu yüzden bu Linux dağıtımları için en iyi çözüm gibi görünüyor.


6

Hızlı cevap: Hem kurulum / güncelleme parametresi ile proxy yapılandırması ekleyin

gem install --http-proxy http://host:port/ package_name

gem update --http-proxy http://host:port/ package_name

5
Mevcut cevapları olan eski bir soruya cevap eklerken, cevabınızın ne eklediğini açıklamak faydalı olacaktır.
Jason Aller

tüm ayrıntıları okumadan doğrudan komut belirtmek için (hızlı cevaplar)
Shantonu

ve ortam değişkenini ayarlamak herkes için bir seçenek değildir (sadece bir kez güncelleme yaptığınızda)
Shantonu

Lütfen tüm açıklamaları yorum
Nico Haase

5

Çözüm, yerel makinenize http://web.archive.org/web/20060913093359/http://apserver.sourceforge.net:80/ yüklemek , yapılandırmak ve bu proxy üzerinden taşlar çalıştırmaktır.

  • Yükle: Apserver 097'yi (ve deneysel 098 değil!) İndirin ve paketten çıkarın.
  • Yapılandırma: Edit server.cfg dosyası ve MS de vekaleten değerlerini koymak PARENT_PROXYve PARENT_PROXY_PORT. DOMAIN ve USER değerlerini girin. ŞİFREYİ boş bırakın (iki nokta üst üste işaretinden sonra hiçbir şey) - başlattığınızda sizden istenir.
  • Apserver'ı çalıştırın: cd aps097; python main.py
  • Mücevherleri Çalıştır: gem install—http-proxy http://localhost:5865/ library

5
Bir google grubunda 'apserver'ın artık' NTLM Yetkilendirme Sunucusu 'olduğunu okuyun; utanç verici olanı aramanın o ikinciye yönlendirmediği için utanç.
Darren Bishop

Merhaba Jarin, yorumunda belirttiğiniz bağlantıya gittim ve indirmeyi bulamadım. Başka bir yerden indirebilmemin bir yolu var mı?
Matrich

1
@Marrich, Darren'ın yorumuna göre. apserver şimdi yeniden adlandırıldı ve burada bulundu: ntlmaps.sourceforge.net
atomicules

4

Bir proxy arkasında çalışıyorum ve doğrudan http://rubygems.org adresinden indirerek SASS'ı yükledim .

Sonra koştum sudo gem install [path/to/downloaded/gem/file]. Bunun tüm taşlar için işe yarayacağını söyleyemem, ancak bazı insanlara yardımcı olabilir.


3

Bu benim için bir Windows kutusunda çalıştı:

set HTTP_PROXY=http://server:port
set HTTP_PROXY_USER=username
set HTTP_PROXY_PASS=userparssword
set HTTPS_PROXY=http://server:port
set HTTPS_PROXY_USER=username
set HTTPS_PROXY_PASS=userpassword

İhtiyaç duyduğumda ortam değerlerini ayarlamak için kullandığım bu satırlarla bir toplu iş dosyası var.

Hile, benim durumumda, HTTPS_PROXYsetlerdi. Onlar olmadan, her zaman 407 proxy kimlik doğrulama hatası aldım.


3

* Nix sistemindeyseniz şunu kullanın:

export http_proxy=http://${proxy.host}:${port}
export https_proxy=http://${proxy.host}:${port}

ve sonra şunu deneyin:

gem install ${gem_name}



1

Bir proxy'nin arkasındaysa, Ruby indirmelerine gidebilir , belirtilen güncellemeyi (veya Mücevher) istenen bir konuma indirecek olan İndir'i tıklayın.

Ardından, Ruby komut satırı aracılığıyla, indirilen konumu kullanarak şunları kullanın: pushd [directory]

Örneğin : pushd D:\Setups

ardından aşağıdaki komutu çalıştırın: gem install [update name] --local

örneğin: gem install rubygems-update --local.

Ruby güncelleme sürüm 2.4.1 ile Windows 7'de test edilmiştir.

Kontrol etmek için aşağıdaki komutu kullanın: ruby -v


1

Toplu iş dosyalarını düzenlemek gibi (diğer Ruby mücevherleri, örneğin Bundler için yapmanız gerekebilir), bunu bir kez yapmak ve düzgün bir şekilde yapmak daha iyidir.

Windows'da, kurumsal proxy'imin arkasında, tek yapmam gereken HTTP_PROXYortam değişkenini sistemime eklemekti .

  1. Başlat -> sağ tıklayın Bilgisayar -> Özellikler
  2. "Gelişmiş Sistem Ayarları" nı seçin
  3. Gelişmiş -> Ortam Değişkenleri'ne tıklayın
  4. " HTTP_PROXY" Adlı yeni bir Sistem değişkeni oluşturun ve Değeri proxy sunucunuza ayarlayın
  5. Yeniden başlatın veya oturumu kapatıp tekrar açın

Kimlik doğrulama gereksinimlerinize bağlı olarak, HTTP_PROXYdeğer aşağıdaki kadar basit olabilir:

http://proxy-server-name

Veya diğerlerinin işaret ettiği gibi daha karmaşık

http://username:password@proxy-server-name:port-number

0

SSH ile tünel yapan herkes için; gemkomutun SOCKS proxy'sini kullanan bir sürümünü oluşturabilirsiniz :

  1. Yükleme socksifyile gem install socksify(eğer, vekil olmadan bu adımı yapabilmek gerekir en azından)
  2. Mevcut mücevher exe'nizi kopyalayın

    cp $(command which gem) /usr/local/bin/proxy_gem
  3. Favori düzenleyicinizde açın ve bunu en üste ekleyin (shebang'dan sonra)

    require 'socksify'
    
    if ENV['SOCKS_PROXY']
      require 'socksify'
      host, port = ENV['SOCKS_PROXY'].split(':')
      TCPSocket.socks_server = host || 'localhost'
      TCPSocket.socks_port = port.to_i || 1080
    end
  4. Tünelinizi kurun

    ssh -D 8123 -f -C -q -N user@proxy
  5. Gem komutunuzu proxy_gem ile çalıştırın

    SOCKS_PROXY=localhost:8123 proxy_gem push mygem
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.