SSH к wsl
Так вышло — что вы гордый обладатель wsl на своем домашнем компьютере. Однако по какой то причине не настроили подключение к своей любимой вычислительной машинке по ssh? Возрадуйтесь! Это пост — инструкция, для создания довольно защищенного способа доступа к своей кранчилке циферок. Для дополнительной защиты — будем использовать google‑authentificator так как это домашний сервер, и не хочется чтобы к нему получили доступ из‑за глупой утечки.
Результат
Выполнив шаги в методичке получим возможность очень удобно подключиться к wsl через vscode:
Нажимаем значок подключения по ssh. (сначала надо установить расширение для vscode которое позволяет это делать)
Выбираем наш хост сконфигурированый через
~/.ssh/config
Здесь вводим наш verification code из гугл аутентификатора.
Ну и успешно заходим.
Что используется в решении
Windows11
Роутер с OpenWRT (мастхев в наши времена)
Статический айпи от провайдера (может и не потребоваться, однако в моем случае концепт NAT behind NAT ломал подключение)
Методичка
К сожалению подключение я оформлял довольно давно, а пост записываю только сейчас, поэтому может получиться что не выйдет записать stepbystep гайд. Но все равно думаю будет полезно.
Сначала настраиваем ssh на windows:
Изначальный гайд, для продвинутых — https://gist.github.com/mattbell87/f5bd7b78c8d0ad7f0dfc3addae4f4897#default-shell-method. Но если не хочешь разбираться, просто листай дальше.
Методом проб и ошибок обнаружил для себя, что работает только такой:
открываем powershell от администратора
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force
Get-Service -Name sshdГенерируем сертификаты и кладем в папку
C:\Users\<Пользователь>\.ssh
обязательно с дефолтным названием, чтобы не пришлось настраивать known_hosts. Мои выглядят так.Готово. SSH на Windows11 настроен.
Настройка SSH на роутере.
Изначальная статья, откуда черпал вдохновение https://forum.openwrt.org/t/howto-openssh-with-mfa-on-openwrt-19–07-x-using-google-authenticator/88025
Подключаемся к роутеру. По умолчанию можно подключиться только локально и через dropbear.
Перемести встроенный в OpenWrt SSH-сервер Dropbear так, чтобы он работал только в локальной сети (LAN) и не использовал порт 22 (например, используй порт 20022). Это можно настроить в Luci по адресу:
http://192.168.1.1/cgi-bin/luci/admin/system/admin/dropbear.Если что-то пойдёт не так с OpenSSH, ты всё равно сможешь войти в систему по сети через Dropbear.
Подключись теперь по новому dropbear порту в выполни следующие команды
opkg update opkg install google-authenticator-libpam openssh-server-pam ssh-keygen -t ed25519 # возможно этого хватит, но если нет - то добавь ключи в authorized_keys service sshd restart google-authenticator
Далее настрой 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
Отредактируй файл /etc/ssh/sshd_config (например, с помощью команды
nano /etc/ssh/sshd_config
), чтобы внести следующие изменения:PermitRootLogin yes|
PubkeyAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
Отредактируй файл
/etc/pam.d/sshd
(например, с помощью командыnano /etc/pam.d/sshd
), чтобы внести следующие изменения:
закомментируй строку#auth include common-auth
Добавь в конец файла authrequired /usr/lib/security/pam_google_
authenticator.so
service sshd restart
Настрой правила трафика в брандмауэре (по адресу: http://192.168.1.1/cgi-bin/luci/admin/network/firewall/rules), если хочешь иметь возможность подключаться к OpenSSH из интернета.
Настройка ssh на тачке для подключения
Добавь в ~/.ssh/config следующие строки, аккуратно заполнив их своими данными
Host router
Port <порт для подключения к роутеру по SSH не DROPBEAR!>
HostName
User artem
IdentityFile ~/.ssh/windows
ServerAliveInterval 60
ServerAliveCountMax 3
Дополнительные настройки
Если хочется — можно настроить например запуск и гашение тачки через wakeonlan.
Устанавливаем wakeonlan на роутере.
Для запуска машины из режима сна: Подключаемся к роутеру, и выполняем следующую команду:
wakeonlan -i <хост машины windows внутри OpenWRT> 04:7C:16:C7:30:E8
Для погружения машины обратно в сон (для людей которые выключают газ и свет при уходе из дома), в терминале vscode когда уже поключились к винде — выполняем команду:
shutdown.exe /s
Выводы
Сильно заморочившись и поняв дзен сетей — можно получить действительно очень удобный и безопасный доступ к своей локальной машинке. Я например теперь даю отдохнуть своей больной спине от позы кешью-креветки и работаю за компьютером лежа на диванчике:-)
Habrahabr.ru прочитано 6386 раз