Рейтинг:0

Смонтировать папку из WSL в Ubuntu через SSH с помощью SSHFS

флаг my

Я пытаюсь подключить папку, расположенную внутри WSL, к моей машине с Ubuntu 20.4, используя SSHFS, но я всегда получаю сообщение о том, что «Нет такого файла или каталога». Как мне это сделать?

Очевидный способ, которым я пытался смонтировать каталог, был следующим:

sshfs user@remotehost:"\wsl$\Ubuntu-20.04" /home/user/Remote/
Will avatar
флаг id
Можете ли вы отредактировать свой пост, чтобы сказать, как вы пытаетесь его смонтировать, пожалуйста?
Adam avatar
флаг my
@ Буду ли я редактировать свой вопрос. Спасибо за предложение.
Рейтинг:0
флаг vn

Короткий ответ:

Используйте хост Windows в качестве ssh jumphost для доступа к WSL.

Более детально:

Есть несколько подводных камней при попытке доступа к WSL (особенно WSL2) через ssh:

Во-первых, вы, возможно, столкнулись с тем фактом, что WSL2 работает в виртуализированной среде с NAT-адаптером vNIC. Это означает, что службы, работающие в WSL2, недоступны напрямую с других компьютеров в сети.

WSL предоставляет локальная переадресация, который разрешает доступ с самого хоста Windows к службам, работающим в WSL2 (через локальный: номер порта). Но это не распространяется на другие машины в сети.

Вы можете увидеть полную ветку Github на этом здесь со ссылкой, ведущей непосредственно к комментарию, что это обычно рекомендуется решить эту проблему.

Это включает в себя:

  • Настройка правил брандмауэра
  • Переадресация портов из Windows в виртуальный сетевой интерфейс WSL2
  • Самая большая проблема здесь заключается в том, что адрес vNIC меняется каждый раз при перезапуске WSL. Таким образом, скрипт должен удалять старые правила и создавать их заново при каждой перезагрузке.

Но с вашим обновленным редактированием вы, похоже, пытаетесь сделать что-то немного другое, где, похоже, вы пытаетесь получить доступ к псевдо-общему ресурсу WSL через Windows, возможно, через ssh на самом хосте Windows.

К сожалению, это также не сработает, потому что \wsl$\... сама по себе является сетевой файловой системой (использующей протокол 9P). Это означает, что на самом деле это не существовать на самом хосте Windows при доступе через ssh.

Мое предпочтительное решение с ssh (и, следовательно, sshfs) заключается в использовании ssh-переходник. Это позволяет обойти проблемы «изменения адреса vNIC» и не требует запуска сценария при каждой загрузке Windows.

Чтобы настроить это:

  • Установите сервер Windows OpenSSH на хосте Windows. Я использую порт 22 по умолчанию для «хост» ssh, но это не обязательно.
  • Установите и настройте SSH в своем экземпляре WSL. Здесь вам нужно будет использовать другой номер порта, чем для хоста Windows. Для этого примера мы будем использовать порт 8022. Отредактируйте свой /etc/ssh/sshd_config изменить порт.
  • Необязательно, но рекомендуется настроить экземпляры Windows OpenSSH и WSL с вашим открытым ключом в ../ssh/authorized_keys (в Windows OpenSSH это находится под вашим %userprofile%/.ssh каталог. В Linux/WSL, конечно, это в ~/.ssh.

Теперь, поскольку (как упоминалось ранее) хост Windows может получить доступ к экземплярам WSL2 на локальный хост, вы можете использовать Windows SSH в качестве промежуточного хоста для сеансов WSL2 SSH.

При условии, что:

  • Ваш компьютер с Windows называется WindowsHost (замените на то, что на самом деле называется)
  • У вас есть Windows OpenSSH на порту 22
  • У вас есть сервер WSL SSH на порту 8022.

Затем вы можете смонтировать свою систему WSL, используя:

sshfs -o ssh_command='ssh -J windowshost' -p 8022 локальный хост:/ <точка монтирования>

Экземпляр WSL называется «localhost», потому что это адрес с точки зрения jumphost (хоста Windows).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.