2008-08-07 30 views
203

Tường lửa tôi đang chạy phía sau đang chạy máy chủ Microsoft ISA ở chế độ chỉ NTLM. Băm bất cứ ai có thành công nhận được đá quý ruby ​​của họ để cài đặt/cập nhật thông qua ruby ​​sspi đá quý hoặc phương pháp khác?Làm cách nào để cập nhật Ruby Gems từ phía sau Proxy (ISA-NTLM)

... hoặc tôi chỉ đang lười biếng?

Lưu ý: rubysspi-1.2.4 không hoạt động.

cũng này làm việc cho "igem", một phần của dự án IronRuby

+6

+1 tôi đã bị kẹt trong này một ngày. Cam ơn vi đa hỏi. – Gishu

+0

Tôi đã nhận được rubysspi để làm việc, nhưng có rất nhiều yêu cầu không quan trọng. Nếu bạn muốn sử dụng nó từ một vỏ Git Bash, bạn sẽ cần một bí danh được thêm vào tệp .bashrc của bạn, chẳng hạn như: 'alias gem = 'ruby -rspa \' mà gem \ ''' – iconoclast

+1

Nếu bạn có proxy sau khi thực hiện các bước trong hầu hết các câu trả lời này, hãy thử đảm bảo 'sudo' có quyền truy cập vào các biến môi trường của bạn bằng cách thêm công tắc' -E', ví dụ: 'sudo -E doSomething' –

Trả lời

197

tôi đã không thể có được tôi làm việc kể từ chuyển đổi dòng lệnh nhưng tôi đã có thể làm điều đó chỉ bằng cách thiết lập biến môi trường HTTP_PROXY của tôi . (Lưu ý rằng trường hợp có vẻ quan trọng). Tôi có một tệp hàng loạt có một dòng như thế này trong đó:

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

Tôi đặt bốn biến tham chiếu trước khi tôi đến dòng này rõ ràng. Ví dụ nếu tên người dùng của tôi là "wolfbyte", mật khẩu của tôi là "bí mật" và proxy của tôi được gọi là "Trư Bát Giới" và hoạt động trên cổng 8080:

SET HTTP_PROXY=http://wolfbyte:[email protected]:8080 

Bạn có thể muốn phải cẩn thận như thế nào bạn quản lý đó bởi vì nó lưu trữ mật khẩu của bạn ở dạng văn bản thuần túy trong phiên của máy nhưng tôi không nghĩ rằng đó là quá nhiều vấn đề.

+5

Có vẻ như 'gem' không nhận ra dấu gạch chéo ngược trong chuỗi proxy, cho dù bởi http_proxy env var hoặc --http-proxy argument. ví dụ. từ hộp Ubuntu của tôi --http-proxy http: // domain \\ userid @ server: cổng cho tôi lỗi: "đối số không hợp lệ: --http-proxy ..."; May mắn thay, máy chủ proxy của tôi không yêu cầu đặc tả miền và gem làm việc mà không có nó. – spoulson

+0

ISA cho phép quản trị viên chỉ định miền mặc định để xác thực. Bạn có thể cố gắng loại bỏ miền và chỉ sử dụng tên người dùng của bạn như spoulson gợi ý. Nếu quản trị viên ISA của bạn đã chỉ định tên miền mặc định và tài khoản người dùng của bạn nằm trong miền đó, điều này sẽ phù hợp với bạn (giả sử không có quy tắc chặn trên tường lửa) – squillman

+0

Cảm ơn bạn đã làm việc này! Tự hỏi tại sao nó không hoạt động khi tôi thử dòng lệnh -p và --http-proxy args. Nó có vẻ như env var là những gì làm việc. – Gishu

5

Một cách giải quyết là cài đặt http://apserver.sourceforge.net trên máy tính địa phương của bạn, cấu hình nó và chạy đá quý thông qua proxy này.

  • Cài đặt: Chỉ cần tải xuống apserver 097 (chứ không phải thử nghiệm 098!) Và giải nén.
  • Định cấu hình: Chỉnh sửa tệp server.cfg và đặt giá trị cho proxy MS của bạn theo số PARENT_PROXYPARENT_PROXY_PORT. Nhập các giá trị cho DOMAIN và USER. Để trống PASSWORD (không có gì sau dấu hai chấm) - bạn sẽ được nhắc khi khởi chạy nó.
  • Run apserver: cd aps097; python main.py
  • Run Gems: gem install—http-proxy http://localhost:5865/ library
+5

Đọc trong nhóm google 'apserver' bây giờ là 'Máy chủ ủy quyền NTLM'; xấu hổ mà tìm kiếm trước đây không chuyển hướng đến sau này. –

+0

Xin chào Jarin, Tôi đã đi đến liên kết bạn đã cung cấp trong nhận xét của mình và không thể tìm thấy nội dung tải xuống đó. Có cách nào tôi có thể tải xuống từ bất kỳ nơi nào khác không? – Matrich

+1

@Matrich theo nhận xét của Darren. apserver bây giờ được đổi tên và tìm thấy ở đây: http://ntlmaps.sourceforge.net/ – atomicules

46

Tôi đã sử dụng cntlm (http://cntlm.sourceforge.net/) tại cơ quan. Cấu hình rất giống với ntlmaps.

Các công trình lớn, và cũng cho phép tôi để kết nối hộp Ubuntu của tôi để proxy ISA.

Check-out http://cntlm.wiki.sourceforge.net/ để biết thêm thông tin

+2

Đây là cách ít đau đớn nhất trong tất cả các thử. Trên Ubuntu/Debian, tôi cài đặt apt-get cntlm, chỉnh sửa config và sau đó export http_proxy = "http: // localhost: 3128". Công trinh! – Konrads

+0

Hoạt động hoàn hảo trên các cửa sổ. Cảm ơn! –

7

bài viết rất nhiều về chủ đề này, và giúp đỡ người khác tiết kiệm giờ cố gắng giải pháp khác nhau, đây là kết quả cuối cùng của giờ của tôi về mày mò.

Ba giải pháp trên internet tại thời điểm này là: rubysspi apserver cntlm

rubysspi chỉ hoạt động từ một máy tính Windows, AFAIK, vì nó dựa trên thư viện win32api. Vì vậy, nếu bạn đang ở trên một hộp Windows cố gắng chạy qua một proxy, đây là giải pháp cho bạn. Nếu bạn đang ở trên bản phân phối Linux, bạn sẽ không may mắn.

máy chủ dường như là dự án đã chết. Liên kết được liệt kê trong các bài đăng tôi đã thấy dẫn đến trang 404 trên sourceforge. Tôi tìm kiếm "apserver" trên sourceforge trả về không có gì.

Liên kết sourceforge cho cntlm mà tôi đã thấy chuyển hướng đến http://cntlm.awk.cz/ nhưng thời gian đó đã hết. Tìm kiếm trên sourceforge sẽ bật liên kết này, hoạt động: http://sourceforge.net/projects/cntlm/

Sau khi tải xuống và định cấu hình cntlm Tôi đã quản lý cài đặt gem qua proxy, vì vậy đây có thể là giải pháp tốt nhất cho bản phân phối Linux.

186

Đối với hệ điều hành Windows, tôi đã sử dụng Fiddler để khắc phục sự cố.

  1. Cài đặt/Run Fiddler từ www.fiddler2.com
  2. Run đá quý:

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

Làm việc một điều trị, dễ dàng hơn nhiều so với ntlmaps và cntlm. – atomicules

+30

Điều này làm việc cho tôi. Lưu ý rằng Fiddler không cần thiết trong mọi tình huống. Chỉ cần 'gem install --http-proxy http: //COMPANY.PROXY.ADDRESS $ gem_name' là tất cả những gì cần thiết cho tôi. – Polaris878

+2

Magic - hoạt động giống như một quả bom - và hầu hết chúng ta đã có nó ... – Jim

8

Tôi đã thử tất cả các giải pháp trên, tuy nhiên không ai trong số họ làm việc. Nếu bạn đang trên linux/macOS i cao đề nghị sử dụng tsocks trên một đường hầm ssh. Những gì bạn cần để thiết lập này hoạt động là một máy mà bạn có thể đăng nhập thông qua ssh, và thêm vào đó một chương trình được gọi là tsocks được cài đặt.

Ý tưởng ở đây là tạo một đường hầm động thông qua SSH (proxy s5). Sau đó chúng tôi cấu hình tsocks sử dụng đường hầm này và để bắt đầu ứng dụng của chúng tôi, trong trường hợp này:

tsocks gem install ... 

hoặc để giải thích cho đường ray 3.0:

tsocks bundle install 

Hướng dẫn chi tiết hơn có thể được tìm thấy dưới:

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

Mặc dù được viết cho Ubuntu, quy trình phải được áp dụng cho tất cả các máy dựa trên Unix. Một thay thế cho tsocks cho Windows là FreeCap (http://www.freecap.ru/eng/). Một ứng dụng SSH hữu hiệu trên các cửa sổ được gọi là putty.

+1

Than ôi, URL dường như không hoạt động nữa. –

+0

Tôi đã tìm thấy bài viết trong bản sao lưu của mình và vừa xuất bản lại nó với cùng một URL. – ByScripts

+0

URL vẫn không khả dụng. Khi cung cấp liên kết đến trang web không phải là Stack Exchange, ngoại tuyến, tóm tắt các phần nổi bật ở đây và cung cấp tín dụng cho trang web đó. Bằng cách đó, khi liên kết bị phá vỡ, phần quan trọng vẫn còn ở đây. –

10

Nếu bạn đang gặp vấn đề về việc chứng thực thông qua proxy của bạn, hãy chắc chắn để thiết lập các biến môi trường chính xác định dạng dưới đây:

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

cú pháp user:[email protected] dường như không làm việc và cũng có một số biến môi trường nặng tên nổi xung quanh trên stack Overflow và foru khác nhau m bài đăng.

Cũng lưu ý rằng có thể mất một lúc để đá quý của bạn bắt đầu tải xuống. Lúc đầu, tôi nghĩ rằng nó không hoạt động nhưng với một chút kiên nhẫn họ bắt đầu tải xuống như mong đợi.

+0

Mẹo của Benjamin Wootton làm việc tuyệt vời trên máy tính xách tay Windows 7 của tôi được kết nối với mạng LAN của công ty. Trong cửa sổ dòng lệnh tại dấu nhắc DOS, tôi đặt HTTP_PROXY là http: // localhost: 8888 (bỏ qua khoảng trống) và sau đó sử dụng tên người dùng mạng LAN và mật khẩu của tôi cho HTTP_PROXY_USER và HTTP_PROXY_PASS tương ứng. – raycarr

+0

Không có giải pháp nào khác phù hợp với tôi. Điều này làm việc một điều trị. Cảm ơn Benjamin! – thegreendroid

112

này hoàn toàn làm việc:

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

Đây là câu trả lời cập nhật nhất, nó cũng hoạt động với các cửa sổ. Tuy nhiên, tôi phải thêm tên người dùng và mật khẩu của mình: gem install --http-proxy http: // [_user_]: [_password_] @ [_server_]: [_port_] – Geronimo

+0

Làm việc tuyệt vời cho tôi. Yêu thích giải pháp ngắn và đơn giản. – Urchin

+0

Tôi không thể cài đặt jekyll và tiếp tục nhận được 'SSL_connect SYSCALL trả về = 5 errno = 0 state = unknown state (https://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/jekyll-3.0.0.gemspec .rz) '. Điều này làm việc cho tôi với 'gem install --http-proxy http://127.0.0.1:8580 jekyll' –

35

tôi thử một số các giải pháp này, và không ai trong số họ làm việc.Cuối cùng tôi đã tìm thấy giải pháp phù hợp với mình:

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

tham số -p để chuyển proxy. Tôi đang sử dụng phiên bản Gem 1.9.1.

+1

Đã thực hiện cài đặt bằng cách thay thế phần proxy thành http: // tên người dùng: password @ proxy_ip: proxyport –

+0

Tôi phải thêm 'proxy_ip' được sử dụng cho các kết nối' https' để hoạt động! Tuyệt vời: D (đá quý phiên bản 2.0.14) – madlymad

4

Tôi đang làm việc sau proxy và chỉ cần cài đặt SASS bằng cách tải xuống trực tiếp từ http://rubygems.org.

Sau đó, tôi chạy sudo gem install [path/to/downloaded/gem/file]. Tôi không thể nói điều này sẽ làm việc cho tất cả các đá quý, nhưng nó có thể giúp một số người.

+0

Cảm ơn bạn, không có gì khác làm việc nhưng điều này cho ruby ​​2.x cho tôi – catrapture

2

Nếu bạn đang ở trên một hệ thống * nix, sử dụng này:

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

và sau đó thử:

gem install ${gem_name} 
14

này giải quyết vấn đề của tôi một cách hoàn hảo:

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

Bạn có thể cần để thêm tên người dùng và mật khẩu của bạn vào đó:

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

Chỉ cần thử nghiệm nó và công việc này trong windows 8 – disklosr

+0

Câu trả lời này là câu trả lời. Câu trả lời được gắn cờ xanh không hoạt động chút nào. – nottinhill

+0

Tính năng này hoạt động với tôi bằng auth trên Mac OSX 10.9.4. –

1

Thay vì chỉnh sửa tệp hàng loạt (bạn có thể phải làm cho các loại đá quý khác của Ruby, ví dụ: Bundler), nó có thể tốt hơn để làm điều này một lần, và làm điều đó đúng cách.

Trên Windows, sau proxy công ty, tất cả những gì tôi phải làm là thêm biến môi trường HTTP_PROXY vào hệ thống của mình.

  1. Start -> nhấn chuột phải Computer -> Properties
  2. Chọn "Advanced System Settings"
  3. Nhấn Advanced -> Environment Variables
  4. Tạo một biến hệ thống mới có tên "HTTP_PROXY", và thiết lập các giá trị gia tăng đến máy chủ proxy của bạn
  5. Khởi động lại hay đăng xuất và đăng nhập lại

Tùy thuộc vào yêu cầu xác thực của bạn, t ông HTTP_PROXY giá trị có thể đơn giản như:

http://proxy-server-name 

Hoặc phức tạp như những người khác đã chỉ ra

http://username:[email protected]:port-number 
1

Nếu sau proxy, bạn có thể điều hướng đến Ruby downloads, nhấp vào Tải xuống, sẽ tải xuống bản cập nhật được chỉ định (hoặc Đá quý) đến vị trí mong muốn.

Tiếp theo, thông qua dòng lệnh Ruby, tìm đến vị trí tải về bằng cách sử dụng: pushd [directory]

ví dụ: pushd D:\Setups

sau đó chạy lệnh sau: gem install [update name] --local

ví dụ: gem install rubygems-update --local.

Đã thử nghiệm trên Windows 7 với phiên bản cập nhật Ruby 2.4.1.

Để kiểm tra sử dụng lệnh sau: ruby -v

3

này đã làm việc cho tôi trong một hộp Windows:

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 

Tôi có một tập tin thực thi với những dòng này mà tôi sử dụng để thiết lập các giá trị môi trường khi tôi cần nó .

Bí quyết, trong trường hợp của tôi, là HTTPS_PROXY bộ. Không có chúng, tôi luôn gặp lỗi xác thực proxy 407.

11

Tạo một file .gemrc (hoặc trong/etc/gemrc hoặc ~/.gemrc hoặc ví dụ với đầu bếp đá quý trong/opt/bếp/nhúng/etc/gemrc) chứa:

http_proxy: http://proxy:3128 

Sau đó, bạn có thể gem install như bình thường.

+1

Dường như làm việc, cảm ơn :) –