Если вы работаете с WSL (Windows Subsystem for Linux) в Windows 11 и сталкиваетесь с ошибкой The file cannot be accessed by the system
при попытке запустить команды через SSH, вероятно, проблема связана с версией WSL из Microsoft Store. Я сам недавно разбирался с этой ситуацией, и сейчас расскажу, как перейти на «встроенную» версию WSL, которая корректно работает в удалённых сессиях.
Кстати, магазинная версия WSL (устанавливаемая через wsl --install
) иногда конфликтует с OpenSSH-сервером из-за особенностей интеграции. В Microsoft даже упоминают это в официальной документации, но без чётких инструкций по исправлению. Не переживайте – решение есть, и оно не требует глубоких знаний системы.
Почему магазинная версия WSL вызывает проблемы с SSH?
Магазинная версия WSL (она же «Store WSL») использует другой механизм взаимодействия с системой, чем встроенная. Когда вы подключаетесь через SSH, сессия работает в контексте, где доступ к некоторым компонентам WSL ограничен. Это связано с тем, что Store-версия запускается через Appx-пакет, который не полностью интегрируется с системными службами.
Например, при попытке выполнить wsl
в SSH-сессии возникает ошибка доступа к файлам – система просто не видит нужные компоненты. Встроенная версия (она же «In-Windows WSL») лишена этого недостатка, так как устанавливается через системные обновления и интегрируется на уровне компонентов Windows.
Полная инструкция: переходим на встроенную версию WSL
Перед тем как начать, сохраните все данные из WSL-дистрибутивов – процесс удаления затронет их. Если нужно, экспортируйте виртуальные машины через wsl --export
.
1. Удаление текущей версии WSL:
Откройте PowerShell или командную строку от имени администратора и выполните:
wsl --uninstall
Это удалит ядро WSL и все связанные компоненты. Но магазинная версия может оставить «следы», поэтому переходим к следующему шагу.
2. Отключение компонента WSL через панель управления:
Перейдите в «Панель управления» → «Программы» → «Включение или отключение компонентов Windows». Найдите в списке Подсистема Windows для Linux и снимите галочку. Нажмите OK и перезагрузите компьютер.
Важно: без перезагрузки изменения не вступят в силу. Если пропустите этот шаг, установка новой версии может завершиться ошибкой.
3. Скачивание встроенной версии WSL с GitHub:
Магазинная установка нам не подходит, поэтому загрузите последний релиз напрямую из официального репозитория Microsoft. Ищите файл с названием вроде WSL-x64.msi
(например, WSL_1.2.5.0_x64.msi
).
Совет: проверьте цифровую подпись файла перед установкой, чтобы избежать рисков безопасности.
4. Установка WSL и дистрибутива:
Запустите скачанный MSI-файл и следуйте инструкциям. После завершения откройте терминал и установите нужный дистрибутив через команду:
wsl --install -d Ubuntu
Можно выбрать Debian, Alpine или другой вариант из списка.
Проверка работы WSL через SSH
После переустановки подключитесь к машине по SSH и выполните wsl --version
. Если версия отображается без ошибок, всё прошло успешно. Теперь можно использовать команды вроде:
rsync -vPn --rsync-path='wsl rsync' my_user@my_ip:/mnt/c/rsync_testing .
Если же ошибка The file cannot be accessed by the system
сохраняется, проверьте:
- Активирован ли компонент WSL в «Параметрах Windows» (иногда после обновлений он отключается);
- Не блокирует ли брандмауэр доступ к WSL (попробуйте временно отключить его для теста);
- Установлены ли последние обновления Windows через
Настройки → Центр обновления
.
Дополнительные советы для работы с WSL
Чтобы избежать проблем в будущем:
- Не обновляйте WSL через Microsoft Store – используйте только
wsl --update
или ручную загрузку с GitHub; - Настройте /etc/wsl.conf для управления автоматическим монтированием дисков (например, добавьте
automount.root = /mnt/
); - Для работы с сетевыми приложениями в WSL (например, веб-серверами) проверьте настройки брандмауэра и проброса портов.
Если вы переносите данные со старого WSL-дистрибутива, используйте wsl --import
или создайте резервную копию через tar
. И помните: встроенная версия WSL обновляется вместе с системой, поэтому проблемы совместимости возникают реже.
Теперь вы можете спокойно работать с WSL через SSH – ошибки доступа к файлам останутся в прошлом. А если что-то пойдёт не так, пишите в комментарии: помогу разобраться!