SSH к wsl. OPENWRT.. OPENWRT. REMOTE.. OPENWRT. REMOTE. SSH.. OPENWRT. REMOTE. SSH. WSL.

Так вышло — что вы гордый обладатель wsl на своем домашнем компьютере. Однако по какой то причине не настроили подключение к своей любимой вычислительной машинке по ssh? Возрадуйтесь! Это пост — инструкция, для создания довольно защищенного способа доступа к своей кранчилке циферок. Для дополнительной защиты — будем использовать google‑authentificator так как это домашний сервер, и не хочется чтобы к нему получили доступ из‑за глупой утечки.

Результат

Выполнив шаги в методичке получим возможность очень удобно подключиться к wsl через vscode:

  1. Нажимаем значок подключения по ssh. (сначала надо установить расширение для vscode которое позволяет это делать)

    SSH к wsl - 1
  2. Выбираем наш хост сконфигурированый через ~/.ssh/config

  3. Здесь вводим наш verification code из гугл аутентификатора.

    SSH к wsl - 3
  4. Ну и успешно заходим.

    SSH к wsl - 4

Что используется в решении

  • Windows11

  • Роутер с OpenWRT (мастхев в наши времена)

  • Статический айпи от провайдера (может и не потребоваться, однако в моем случае концепт NAT behind NAT ломал подключение)

Методичка

К сожалению подключение я оформлял довольно давно, а пост записываю только сейчас, поэтому может получиться что не выйдет записать stepbystep гайд. Но все равно думаю будет полезно.

Сначала настраиваем ssh на windows:

Изначальный гайд, для продвинутых – https://gist.github.com/mattbell87/f5bd7b78c8d0ad7f0dfc3addae4f4897#default-shell-method. Но если не хочешь разбираться, просто листай дальше.

Методом проб и ошибок обнаружил для себя, что работает только такой:

  1. открываем powershell от администратора

  2. Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
    Start-Service sshd
    Set-Service -Name sshd -StartupType 'Automatic'
    New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WINDOWSSystem32bash.exe" -PropertyType String -Force
    Get-Service -Name sshd

  3. Генерируем сертификаты и кладем в папку C:Users<Пользователь>.ssh обязательно с дефолтным названием, чтобы не пришлось настраивать known_hosts. Мои выглядят так.

    SSH к wsl - 5
  4. Готово. SSH на Windows11 настроен.

Настройка SSH на роутере.

Изначальная статья, откуда черпал вдохновение https://forum.openwrt.org/t/howto-openssh-with-mfa-on-openwrt-19-07-x-using-google-authenticator/88025

  1. Подключаемся к роутеру. По умолчанию можно подключиться только локально и через dropbear.

  2. Перемести встроенный в OpenWrt SSH-сервер Dropbear так, чтобы он работал только в локальной сети (LAN) и не использовал порт 22 (например, используй порт 20022). Это можно настроить в Luci по адресу:
    http://192.168.1.1/cgi-bin/luci/admin/system/admin/dropbear.

    Если что-то пойдёт не так с OpenSSH, ты всё равно сможешь войти в систему по сети через Dropbear.

  3. Подключись теперь по новому dropbear порту в выполни следующие команды

    opkg update 
    opkg install google-authenticator-libpam openssh-server-pam
    ssh-keygen -t ed25519
    # возможно этого хватит, но если нет - то добавь ключи в authorized_keys
    service sshd restart
    google-authenticator

  4. Далее настрой google-authentificator по инструкции с этой ссылки (в целом там все понятно по промптам) https://www.digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-16-04#:~:text=Run the initialization app

  5. Отредактируй файл /etc/ssh/sshd_config (например, с помощью команды nano /etc/ssh/sshd_config), чтобы внести следующие изменения:

    PermitRootLogin yes|
    PubkeyAuthentication yes
    ChallengeResponseAuthentication yes
    UsePAM yes
    AuthenticationMethods publickey,keyboard-interactive

  6. Отредактируй файл /etc/pam.d/sshd (например, с помощью команды nano /etc/pam.d/sshd), чтобы внести следующие изменения:
    закомментируй строку #auth include common-auth
    Добавь в конец файла auth required /usr/lib/security/pam_google_authenticator.so

  7. service sshd restart

  8. Настрой правила трафика в брандмауэре (по адресу: http://192.168.1.1/cgi-bin/luci/admin/network/firewall/rules), если хочешь иметь возможность подключаться к OpenSSH из интернета.

Настройка ssh на тачке для подключения

Добавь в ~/.ssh/config следующие строки, аккуратно заполнив их своими данными

Host router
    Port <порт для подключения к роутеру по SSH не DROPBEAR!>
    HostName <ip роутера (статический который выдал провайдер)
    User root
    IdentityFile ~/.ssh/router_2
    ForwardAgent yes

Host windows
    ProxyCommand ssh -W %h:%p router
    HostName <хостнейм windows компьютера внутри роутера>
    User artem
    IdentityFile ~/.ssh/windows
    ServerAliveInterval 60
    ServerAliveCountMax 3

Дополнительные настройки

Если хочется – можно настроить например запуск и гашение тачки через wakeonlan.

  1. Устанавливаем wakeonlan на роутере.

  2. Для запуска машины из режима сна: Подключаемся к роутеру, и выполняем следующую команду:
    wakeonlan -i <хост машины windows внутри OpenWRT> 04:7C:16:C7:30:E8

  3. Для погружения машины обратно в сон (для людей которые выключают газ и свет при уходе из дома), в терминале vscode когда уже поключились к винде – выполняем команду:
    shutdown.exe /s

Выводы

Сильно заморочившись и поняв дзен сетей – можно получить действительно очень удобный и безопасный доступ к своей локальной машинке. Я например теперь даю отдохнуть своей больной спине от позы кешью-креветки и работаю за компьютером лежа на диванчике :-)

Автор: artem___3

Источник

  • Запись добавлена: 09.04.2025 в 05:16
  • Оставлено в
Рейтинг@Mail.ru
Rambler's Top100