Làm cách nào để SSH vào Bash Bash trên Ubuntu trên Windows 10?


99

Tôi đã cài đặt và làm việc với Windows 10 Anniversary Edition với "Bash trên Ubuntu trên Windows". Tôi muốn có thể SSH vào phiên bản Ubuntu này, nhưng mặc dù tôi đã cài đặt và cấu hình máy chủ openssh (và nghe trên cổng 2200), khi tôi cố gắng ssh thành "localhost: 2200", nó bất ngờ cho tôi biết "Máy chủ kết nối mạng kín ".

Có ai có thể thực hiện thành công điều này?

nhập mô tả hình ảnh ở đây


Sử dụng Process Hacker và nhìn vào tab 'Mạng', nó cho thấy sshd (chạy trên Ubuntu trên Windows 10) đang lắng nghe trên cổng cục bộ 2200.
Mick

và nếu bạn cố gắng kết nối với địa chỉ IP của hệ thống? Ubuntu thường ánh xạ các địa chỉ loopback khác với các cửa sổ và sử dụng các giá trị bổ sung trong 127.0.0.0/8 (thường là 127.0.1.1)
Frank Thomas

@Ramhound: Không đúng. Localhost là localhost và mọi thứ được chia sẻ. Bạn hoàn toàn có thể làm tốt links http://localhost/từ hệ thống con Linux và xem trang web được cung cấp bởi IIS ở phía Windows. Không có sự chia ly.
Sami Kuhmonen

Câu trả lời:


120

Tôi đã nhận nó để làm việc; đây là làm thế nào

Đã gỡ cài đặt ssh-server, cài đặt lại và đảm bảo rằng nó đã bắt đầu với

sudo service ssh --full-restart

Đảm bảo bạn đã tắt quyền truy cập root và thêm người dùng khác vào tệp cấu hình.

Tôi đã có thể kết nối với hệ thống con trên 127.0.0.1:22 như mong đợi. Tôi hy vọng điều này sẽ giúp bạn.

Đây là một ảnh chụp màn hình.

  1. sudo apt-get purge openssh-server
  2. sudo apt-get install openssh-server
  3. sudo nano /etc/ssh/sshd_config và không cho phép đăng nhập root bằng cách cài đặt PermitRootLogin no
  4. Sau đó thêm một dòng bên dưới nó có nội dung:

    AllowUsers yourusername

    và đảm bảo PasswordAuthenticationđược đặt thành yesnếu bạn muốn đăng nhập bằng mật khẩu.

  5. Vô hiệu hóa phân tách đặc quyền bằng cách thêm / sửa đổi: UsePrivilegeSeparation no

  6. sudo service ssh --full-restart

  7. Kết nối với hệ thống con Linux của bạn từ Windows bằng ứng dụng khách ssh như PuTTY.


2
tôi không phải làm điều đó - lạ .. nhưng hãy nhớ rằng đây vẫn đang trong giai đoạn thử nghiệm nên kết quả có thể thay đổi
Master Azazel

7
Ngoài ra, tôi đã phải: Dừng / Vô hiệu hóa Dịch vụ môi giới máy chủ Windows 10 SSH từ bảng điều khiển dịch vụ và đặt: PubkeyAuthentication no trong sshdconfig
math0ne

6
Tôi cũng cần phải thêm một quy tắc tường lửa. Đã có một quy tắc hiện có, nhưng đó chỉ dành cho Proxy máy chủ Windows SSH và khi tôi dừng dịch vụ đó, tường lửa đã chặn lưu lượng truy cập trên cổng 22.
Pierre-Luc Paour

2
Tôi cũng đã phải thay đổi các cổng ( Port 2222trong /etc/ssh/sshd_configtệp), nếu không phải là máy chủ ssh của các cửa sổ đã nhận kết nối trên cổng 22.
arod

2
@ArtemRussakovskii họ dừng lại toàn bộ hệ thống phụ Linux bất cứ khi nào bạn đóng cửa sổ bash ...
Sakher

27

Vì việc triển khai windows không cung cấp chroot, bạn cần sửa đổi / etc / ssh / sshd_config

UsePrivilegeSeparation no

Ngoài ra, bạn sẽ cần phải tạo một người dùng bằng cách sử dụng lệnh useradd hoặc như vậy.


4
Bước này rất cần thiết để làm cho nó hoạt động.
Mick

1
Tôi đã tò mò, vì vậy tôi đã tìm thấy điều này tại freebsd.org/cgi/man.cgi?sshd_config(5) : UsePriv đặc biệt Thanh toán:
krs013

Chỉ định xem sshd (8) có phân tách các đặc quyền hay không bằng cách tạo một quy trình con không có đặc quyền để xử lý lưu lượng mạng đến. Sau khi xác thực thành công, một quy trình khác sẽ được tạo có đặc quyền của người dùng được xác thực. Mục tiêu của phân tách đặc quyền là để ngăn chặn sự leo thang đặc quyền bằng cách chứa bất kỳ tham nhũng nào trong các quy trình không được ưu tiên. Đối số phải là "có", "không" 'hoặc "hộp cát". Nếu UsePriv đặc biệt thanh toán được đặt thành "hộp cát" thì quy trình không xác thực trước xác thực sẽ bị hạn chế bổ sung. Mặc định là "hộp cát".
krs013


24

Các câu trả lời của ủy ban ở trên là tuyệt vời. Cảm ơn bạn cho họ. Và trong khi họ đã đến rất gần, tôi vẫn bị đóng kết nối bởi các vấn đề 127.0.0.1 .

Tôi đã tìm thấy và thêm các bước bổ sung từ bài đăng này đã giúp tôi vượt qua cái bướu. Cụ thể, bắt đầu lại và thêm bước này làm bước đầu tiên / đầu tiên (chú ý vòng loại --purge ), cuối cùng đã giải quyết biến thể của tôi về vấn đề này:

sudo apt-get remove --purge openssh-server
sudo apt-get install openssh-server
sudo vi /etc/ssh/sshd_config # Change Port from 22 to 2222 (Just in case MS-Windows is using port 22; which, by the way, SSH on MS-Windows can be disabled if you want to use port 22).
sudo service ssh --full-restart

Cảm ơn một lần nữa, tôi hy vọng sự bổ sung này sẽ giúp những người khác. = :)


2
Tại sao các downvote? Các hướng dẫn này không hoạt động trong trường hợp của tôi, như đã đề cập, và bước bổ sung ở trên đã hoạt động. Tôi không hiểu
NYCeyes

1
Tôi đã gặp một lỗi rất khác "Không có phương thức xác thực được hỗ trợ (máy chủ đã gửi: khóa công khai)" và các bước này đã sửa lỗi này.
Mike Viens

2
Vì một số lý do, Windows không đánh giá cao việc tôi đang chạy trên Cổng 2222. Nó không bao giờ hiển thị bất kỳ quy trình nào khác sử dụng nó và không có bằng chứng nào về xung đột cổng, nhưng ngay khi tôi thay đổi cổng, nó đã bắt đầu công việc.
forresthopkinsa

Cổng 2222 cũng không hoạt động với tôi, không có dịch vụ nào khác chạy, nhưng 22 hoạt động, đó là một vấn đề vì tôi muốn có nhiều kết nối SSH.
mFeinstein

4

Tôi đã làm mọi thứ như Master Azazel đề nghị và có vấn đề. Khi tôi kết nối với cổng, 22tôi được yêu cầu nhập mật khẩu, nhưng mật khẩu tôi đặt trong hệ thống con Linux không hoạt động.

Giải pháp số 1:
thay đổi cổng SSH /etc/ssh/sshd_configvà khởi động lại máy chủ SSH trong hệ thống con

Giải pháp số 2:
vô hiệu hóa / dừng "Dịch vụ môi giới máy chủ SSH" trong bảng điều khiển dịch vụ của Windows và khởi động lại máy chủ SSH trong hệ thống con.


1
Điều này chỉ áp dụng nếu bạn có thứ gì đó chạy trên windows trên cổng 22.
Master Azazel

3
Ofcz, như bạn thấy trên cài đặt win10 mặc định của tôi, có một dịch vụ chạy vào ngày 22 ...
scotty86

2

Lý do tại sao bạn không thể ssh với nó được hiển thị trong nhật ký từ máy chủ:

chroot ("/ var / run / sshd"): Chức năng không được triển khai [preauth]

Hệ thống con Linux dường như không triển khai chroot và máy chủ ssh cần nó để kết nối không được phép.


3
Điều này đúng .. nhưng các câu trả lời khác giải thích cách làm việc xung quanh yêu cầu chroot.
Mahmoud Al-Qudsi
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.