Tài nguyên máy khách SSH Windows 10 Linux hệ thống phụ tạm thời không khả dụng


24

Tôi đang cố gắng ssh vào máy chủ từ xa của mình trong Hệ thống con Windows 10 Linux. Tôi đang sử dụng MS Windows 10 Home Insider Preview build 14366.

Trong khi tại dấu nhắc lệnh, tôi gõ:

ssh user@domain.com

Vài giây sau khi gõ lệnh ssh, tôi nhận được thông báo sau:

ssh: kết nối với máy chủ domain.com cổng 22: Tài nguyên tạm thời không khả dụng

Tôi có thể kết nối thành công bằng cách sử dụng Putty cũng như sử dụng ssh trong Git Bash.

Vì vậy, điều đó khiến tôi tin rằng vấn đề nằm ở máy tính cục bộ của tôi và cụ thể hơn là trong Hệ thống con Linux. Tôi vẫn rất xanh với môi trường Linux và không biết phải diễn giải thông điệp này như thế nào. Tài nguyên nào không có sẵn và tôi nên làm gì để cung cấp nó?


Đoán đầu tiên: Tường lửa Windows? ps> và hoan nghênh trên superuser :) Google có vẻ hơi liên quan đến fork. Vui lòng chỉnh sửa bài đăng và thêm dòng lệnh cung cấp cho bạn lỗi này.
Hastur


chỉ kiểm tra xem bạn đang sử dụng bản dựng Windows Insider Preview của Windows 10 vì AFAIK hệ thống con Linux chỉ có sẵn trong phiên bản này, không phải trên Windows 10. bình thường 'Nếu không bạn có thể đang sử dụng Cygwin?
gogoud

@ggoud - Tôi đã cập nhật câu hỏi để bao gồm hệ điều hành. Nó thực sự là bản dựng Insider Preview.
kell

2
Tôi cũng đang gặp vấn đề này. Nó ảnh hưởng đến tất cả các chương trình được hỗ trợ bởi ssh như gitapt-get
scicalculator

Câu trả lời:


9

Theo như tôi có thể nói, đây là một lỗi trong WSL. Hy vọng, Microsoft sẽ sửa nó trong bản dựng tiếp theo. Nhưng hiện tại, chúng ta có thể sử dụng bản hack hơi xấu xí này.

Cập nhật # 1 : Chắc chắn là một lỗi. Tìm thấy vấn đề này trên Github. Thier đã đề xuất cách giải quyết việc khởi chạy lại vỏ cho tôi nếu bạn không muốn trải qua tất cả những điều này.

TL; DR Thêm phần này để KẾT THÚC cấu hình SSH của bạn (thường được đặt tại ~/.ssh/config):

Host *
    ProxyCommand nc %h %p %r

Đây là lý do tại sao nó hoạt động: Vấn đề SSH của chúng tôi không phải là vấn đề tường lửa bởi vì nctelnethoạt động với cùng một máy chủ và cổng (thử telnet <host> <port>hoặc nc <host> <port>: bạn sẽ thấy một cái gì đó như SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7). Điều này chúng ta có thể sử dụng để lợi thế của chúng tôi.

SSH cho phép sử dụng các proxy lấy đầu vào tiêu chuẩn và gửi nó đến cổng của máy chủ thông qua ProxyCommandtùy chọn. Điều này thường được sử dụng để tạo đường hầm vào các mạng đến một máy chủ được bảo vệ bằng cách sử dụng máy chủ SSH ở giữa, đôi khi được gọi là máy chủ nhảy (xem liên kết này để biết thêm thông tin).

Bản hack này cho SSH sử dụng proxy không có (các) máy chủ nhảy. Vì vậy, nó xoay quanh việc phân bổ tài nguyên TCP không thành công của SSH bằng cách đẩy tất cả phân bổ tài nguyên mạng lên Netcat, hoạt động. SSH chỉ thực hiện điều SSH mà không cần bất kỳ kết nối mạng nào và Netcat gửi dữ liệu thô qua kết nối TCP đến máy chủ SSH.

CẢNH BÁO: Vì điều này sửa đổi ProxyCommandtất cả các máy chủ, tôi không biết nó tương tác với các máy chủ cấu hình SSH khác sử dụng như thế nào ProxyCommand. Tôi có một vài máy chủ mà tôi có thể kiểm tra điều này và tôi sẽ cập nhật câu trả lời này với kết quả. Có một cơ hội là không có tác dụng phụ bất lợi, nhưng tôi không thể đảm bảo điều đó.

Cập nhật # 2: Tôi đã thực hiện một số thử nghiệm với một vài máy chủ của mình và điều này dường như hoạt động. SSH sử dụng mục trên cùng trong cấu hình khi áp dụng nhiều mục. Do đó, một ProxyCommandmón quà hiện có ở trên bản hack này sẽ ghi đè lên nó. Khi lệnh SSH mới được thực thi, nó sẽ đọc lại cấu hình SSH và nếu không có lệnh nào khác ProxyCommand, SSH sử dụng bản hack của chúng tôi ProxyCommand, cho phép nó chỉ áp dụng cho phiên SSH "ngoài cùng". Lời cảnh báo: nếu bạn đặt hack ở đầu tệp cấu hình (hoặc phía trên mục bạn đang cố gắng SSH), các phiên SSH yêu cầu ProxyCommandsẽ bỏ qua cái khác ProxyCommandvà thay vào đó cố gắng giải quyết địa chỉ của máy chủ và kết nối trực tiếp với Netcat.


Cảm ơn các chi tiết @ computergeek125. Thật không may, ngay cả sau khi thiết lập cấu hình như được đề xuất, tôi vẫn nhận được thông báo tương tự ssh: kết nối với máy chủ domain.com cổng 22: Tài nguyên tạm thời không khả dụng Khi tôi chạy nc -v <host> <port>, cho đầu ra dài dòng, tôi nhận được cùng một lỗi: Tài nguyên tạm thời không có. Tôi có thể đang làm gì đó sai, không chắc chắn. Vì tôi không có bất kỳ vấn đề ssh nào khi sử dụng shell bit Git, nên bây giờ tôi sẽ sử dụng nó. BTW, hệ thống của tôi hiện đang ở bản dựng 14393, vì vậy, nếu đây là một lỗi trong phiên bản tại thời điểm của câu hỏi, thì nó vẫn là một lỗi 27 bản dựng sau này.
kell

Chà điều đó thật thú vị. Tôi sẽ phải làm một số nghiên cứu về bản dựng đó. Lúc đó tôi đang chạy 14903 (Hiện tại tôi đã lên tới 14905). Nó có thể là một cái gì đó họ đã sửa trong bản dựng tôi có.
máy

Làm cách nào để chỉnh sửa cấu hình SSH? Trong bash cho windows console, tôi đã thử vi ~/.ssh/configmở một tập tin trống. Tôi đã dán các lệnh của bạn nhưng khi tôi cố lưu (esc ->: -> wq) thì nó báo cho tôi"~/.ssh/config" E212: Cannot open file for writing
Dan

Ok thật lạ. Bản dựng nào của Windows bạn đang chạy và đầu ra của ls -al ~/.sshcái gì?
máy

3

Đây cũng là một vấn đề đối với tôi, hóa ra đó là tường lửa (Symantec) của tôi chặn tất cả lưu lượng truy cập internet khỏi bash.

Có vẻ như đó là một vấn đề chung với các nhà cung cấp tường lửa bên thứ 3 không nhận ra quy trình:

https://github.com/Microsoft/BashOnWindows/issues/809

Khi tôi tắt tường lửa của tôi, nó hoạt động tốt. Không thể tìm thấy một giải pháp tốt hơn vào lúc này.



0

Để tham khảo trong tương lai, khi bạn cài đặt Nginx, nó sẽ chặn SSH theo mặc định với thông báo lỗi "Tài nguyên tạm thời không khả dụng" trừ khi bạn ...

sudo ufw cho phép ssh


Bản thân Windows 10 đã có tường lửa. Tại sao bạn đề nghị điều đó?
Biswapriyo

Tôi đề nghị rằng đối với những người dùng tương lai có cùng vấn đề vì tôi có cùng một vấn đề và đó là do Nginx đã chặn SSH đến máy chủ
andrerpena
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.