Як я можу SSH перейти в "Bash на Ubuntu в Windows 10"?


99

У мене встановлено і працює Windows 10 Anniversary Edition з "Bash on Ubuntu для Windows". Я хотів би мати змогу SSH в цей екземпляр Ubuntu, але хоча у мене встановлений і налаштований openssh-сервер (і прослуховування на порту 2200), коли я намагаюся перенести ssh на "localhost: 2200", він мені каже "Сервер несподівано закрите мережеве з'єднання ".

Хтось зміг це успішно досягти?

введіть тут опис зображення


Використовуючи процесорний хакер і переглядаючи вкладку "Мережа", він показує, що sshd (працює на Ubuntu в Windows 10) прослуховується на локальному порту 2200.
Мік

а якщо ви спробуєте підключитися до ip-адреси системи? Ubuntu часто відображає адреси зворотного зв’язку інакше, ніж це робить Windows, і використовує додаткові значення в 127.0.0.0/8 (часто 127.0.1.1)
Френк Томас

@Ramhound: Неправда. Localhost - localhost, і все спільне. Ви можете прекрасно зробити links http://localhost/підсистему Linux і побачити веб-сторінку, надану IIS на стороні Windows. Розлуки немає.
Самі Кухмонен

Відповіді:


120

Я змусив його працювати; ось як.

Видалив ssh-сервер, перевстановив його і переконався, що він починається

sudo service ssh --full-restart

Переконайтеся, що ви вимкнули кореневий доступ і додали іншого користувача у конфігураційний файл.

Мені вдалося підключитися до підсистеми 127.0.0.1:22, як очікувалося. Я сподіваюся, що це вам допоможе.

Ось скріншот.

  1. sudo apt-get purge openssh-server
  2. sudo apt-get install openssh-server
  3. sudo nano /etc/ssh/sshd_config і заборонити вхід у корінь, встановивши PermitRootLogin no
  4. Потім додайте рядок під ним:

    AllowUsers yourusername

    і переконайтеся, що PasswordAuthenticationвстановлено, yesякщо ви хочете увійти за допомогою пароля.

  5. Вимкнути розділення привілеїв шляхом додавання / зміни: UsePrivilegeSeparation no

  6. sudo service ssh --full-restart

  7. Підключіться до вашої підсистеми Linux з Windows за допомогою ssh-клієнта типу PuTTY.


2
мені не довелося цього робити - дивно .. але пам’ятайте, що це все ще знаходиться на стадії бета-версії, тому результати можуть відрізнятися
Майстер Азазель

7
Додатково мені довелося: Зупинити / вимкнути Windows 10 SSH Server Broker Services з панелі керування службами та встановити: PubkeyAuthentication ні в sshdconfig
math0ne

6
Мені також потрібно було додати правило брандмауера. Існувало правило, але це було лише для проксі-сервера Windows SSH, і коли я припинив цю службу, брандмауер заблокував трафік на порт 22.
П’єр-Люк Паур,

2
Я також повинен був змінити порти ( Port 2222у /etc/ssh/sshd_configфайлі), якщо не ssh-сервер Windows підхопив з'єднання на порт 22
arod

2
@ArtemRussakovskii вони зупиняють усю підсистему Linux щоразу, коли ви закриваєте вікно bash ...
Sakher

27

Оскільки реалізація Windows не забезпечує chroot, вам потрібно змінити / etc / ssh / sshd_config

UsePrivilegeSeparation no

Також вам потрібно буде створити користувача, використовуючи команду useradd або близько того.


4
Цей крок був важливим для його роботи.
Мік

1
Мені було цікаво, тому я знайшов це на freebsd.org/cgi/man.cgi?sshd_config(5) : UsePrivilegeSeparation:
krs013

Вказує, чи sshd (8) відокремлює привілеї, створюючи непривілейований дочірній процес для обробки вхідного мережевого трафіку. Після успішної аутентифікації буде створено інший процес, який має привілей аутентифікованого користувача. Метою розмежування привілеїв є запобігання ескалації привілеїв шляхом стримування будь-якої корупції в межах непривілейованих процесів. Аргументом має бути "так", "ні" "або" пісочниця ". Якщо для параметра UsePrivilegeSeparation встановлено значення «пісочниця», тоді непривілейований процес попередньої автентифікації підлягає додатковим обмеженням. За замовчуванням - "пісочниця".
krs013


24

Вище відповіді комітету були чудовими. Дякую за них. І хоча вони підходили дуже близько, у мене все-таки було закрито З'єднання через проблеми 127.0.0.1 .

Я знайшов і додав додаткові кроки з цієї посади, які перенесли мене на горб. Зокрема, починаючи з початку та додаючи це як початковий / перший крок (зверніть увагу на класифікатор --purge ), нарешті вирішив мою варіацію цього питання:

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

Ще раз дякую, я сподіваюся, що це доповнення допомагає іншим. = :)


2
Чому потік? Ці вказівки в моєму випадку, як було сказано, не спрацювали, і додатковий крок вище працював. Я не розумію.
NYCeyes

1
У мене була зовсім інша помилка "Немає доступних підтримуваних методів аутентифікації (сервер відправив: publickey)", і ці кроки виправили це.
Майк Віенс

2
Чомусь Windows просто не оцінив, що я працюю на порту 2222. Він ніколи не показував жодних інших процесів його використання, і не було доказів конфлікту портів, але як тільки я змінив порти, він почав робота.
forresthopkinsa

Порт 2222 теж не працює для мене, жодна інша служба не працює, але 22 працює, що є проблемою, оскільки я хочу мати декілька підключень SSH.
mFeinstein

4

Я все зробив так, як запропонував майстер Азазель, і у мене була проблема. Коли я підключився до порту, 22мене попросили пароль, але пароль, який я встановив у підсистемі Linux, не працював.

Рішення №1:
змінити порт SSH /etc/ssh/sshd_configта перезапустити SSH-сервер у підсистемі

Рішення №2:
відключити / зупинити "Служби брокерських служб SSH" на панелі керування службами Windows та перезапустити SSH-сервер у підсистемі.


1
Це стосується лише тих випадків, коли у вас щось працює у Windows на порту 22.
Майстер Азазель

3
Ofcz, як ви бачите, на моїй установці win10 за замовчуванням була служба, яка працює 22 ...
scotty86

2

Причина, по якій ви не можете ввійти до неї, відображається в протоколі з сервера:

chroot ("/ var / run / sshd"): Функція не реалізована [preauth]

У підсистемі Linux, схоже, не реалізовано chroot, і ssh-сервер потребує цього, тому з'єднання заборонено.


3
Що правильно. Але інші відповіді пояснюють, як обійти вимогу chroot.
Махмуд Аль-Кудсі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.