- BrainTools - https://www.braintools.ru -
Так вышло — что вы гордый обладатель wsl на своем домашнем компьютере. Однако по какой то причине не настроили подключение к своей любимой вычислительной машинке по ssh? Возрадуйтесь! Это пост — инструкция, для создания довольно защищенного способа доступа к своей кранчилке циферок. Для дополнительной защиты — будем использовать google‑authentificator так как это домашний сервер, и не хочется чтобы к нему получили доступ из‑за глупой утечки.
Выполнив шаги в методичке получим возможность очень удобно подключиться к wsl через vscode:
Нажимаем значок подключения по ssh. (сначала надо установить расширение для vscode которое позволяет это делать)

Выбираем наш хост сконфигурированый через ~/.ssh/config
Здесь вводим наш verification code из гугл аутентификатора.

Ну и успешно заходим.

Windows11
Роутер с OpenWRT (мастхев в наши времена)
Статический айпи от провайдера (может и не потребоваться, однако в моем случае концепт NAT behind NAT ломал подключение)
К сожалению подключение я оформлял довольно давно, а пост записываю только сейчас, поэтому может получиться что не выйдет записать stepbystep гайд. Но все равно думаю будет полезно.
Изначальный гайд, для продвинутых – https://gist.github.com/mattbell87/f5bd7b78c8d0ad7f0dfc3addae4f4897#default-shell-method [1]. Но если не хочешь разбираться, просто листай дальше.
Методом проб и ошибок обнаружил для себя, что работает только такой:
открываем powershell от администратора
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
Генерируем сертификаты и кладем в папку C:Users<Пользователь>.ssh обязательно с дефолтным названием, чтобы не пришлось настраивать known_hosts. Мои выглядят так.

Готово. SSH на Windows11 настроен.
Изначальная статья, откуда черпал вдохновение https://forum.openwrt.org/t/howto-openssh-with-mfa-on-openwrt-19-07-x-using-google-authenticator/88025 [2]
Подключаемся к роутеру. По умолчанию можно подключиться только локально и через dropbear.
Перемести встроенный в OpenWrt SSH-сервер Dropbear так, чтобы он работал только в локальной сети (LAN) и не использовал порт 22 (например, используй порт 20022). Это можно настроить в Luci по адресу:
http://192.168.1.1/cgi-bin/luci/admin/system/admin/dropbear [3].
Если что-то пойдёт не так с 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 [4] the initialization app [5]
Отредактируй файл /etc/ssh/sshd_config (например, с помощью команды nano /etc/ssh/sshd_config), чтобы внести следующие изменения:
PermitRootLogin yes|PubkeyAuthentication yesChallengeResponseAuthentication yesUsePAM yesAuthenticationMethods publickey,keyboard-interactive
Отредактируй файл /etc/pam.d/sshd (например, с помощью команды nano /etc/pam.d/sshd), чтобы внести следующие изменения:
закомментируй строку #auth include common-auth
Добавь в конец файла auth required /usr/lib/security/pam_google_authenticator.so [6]
service sshd restart
Настрой правила трафика в брандмауэре (по адресу: http://192.168.1.1/cgi-bin/luci/admin/network/firewall/rules [7]), если хочешь иметь возможность подключаться к OpenSSH из интернета.
Добавь в ~/.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.
Устанавливаем wakeonlan на роутере.
Для запуска машины из режима сна [8]: Подключаемся к роутеру, и выполняем следующую команду:wakeonlan -i <хост машины windows внутри OpenWRT> 04:7C:16:C7:30:E8
Для погружения машины обратно в сон [9] (для людей которые выключают газ и свет при уходе из дома), в терминале vscode когда уже поключились к винде – выполняем команду:shutdown.exe /s
Сильно заморочившись и поняв дзен сетей – можно получить действительно очень удобный и безопасный доступ к своей локальной машинке. Я например теперь даю отдохнуть своей больной спине от позы кешью-креветки и работаю за компьютером лежа на диванчике :-)
Автор: artem___3
Источник [10]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/14035
URLs in this post:
[1] https://gist.github.com/mattbell87/f5bd7b78c8d0ad7f0dfc3addae4f4897#default-shell-method: https://gist.github.com/mattbell87/f5bd7b78c8d0ad7f0dfc3addae4f4897#default-shell-method
[2] https://forum.openwrt.org/t/howto-openssh-with-mfa-on-openwrt-19-07-x-using-google-authenticator/88025: https://forum.openwrt.org/t/howto-openssh-with-mfa-on-openwrt-19-07-x-using-google-authenticator/88025
[3] http://192.168.1.1/cgi-bin/luci/admin/system/admin/dropbear: http://192.168.1.1/cgi-bin/luci/admin/system/admin/dropbear
[4] https://www.digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-16-04#:~:text=Run: https://www.digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-16-04#:~:text=Run
[5] the initialization app: https://www.digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-16-04#:~:text=Run%20the%20initialization%20app
[6] authenticator.so: http://authenticator.so
[7] http://192.168.1.1/cgi-bin/luci/admin/network/firewall/rules: http://192.168.1.1/cgi-bin/luci/admin/network/firewall/rules
[8] сна: http://www.braintools.ru/article/9809
[9] сон: http://www.braintools.ru/article/9150
[10] Источник: https://habr.com/ru/articles/899000/?utm_campaign=899000&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.