Відповіді:
Знайшов підручник для цього за допомогою aseering:
Спочатку це обговорювалося і вирішувалося користувачами github imjakey, fpqc, qris, therealkenc, Manouchehri, а також тут:
https://github.com/Microsoft/BashOnWindows/issues/612
Зверніть увагу, що виконання sshd має наслідки безпеки. Доти, доки модель безпеки WSL не повинна була вичерпатися, слід припустити, що будь-хто, хто може використовувати ssh у вашому вікні Windows, має дозвіл виконувати будь-яку команду як користувач Windows, який запускає sshd, незалежно від дозволів на рівні Linux. (Дозволи, ймовірно, є більш обмежувальними, ніж на практиці, але початкова модель безпеки WSL не призначена для дуже складних.)
Спроба зібрати інструкції з github:
sudo dpkg-reconfigure
openssh-server
в оболонці bash sudo nano /etc/ssh/sshd_config
;
редагувати UsePrivilegeSeparation yes
рядок для читання UsePrivilegeSeparation no
. (Це необхідно тому, що UsePrivilegeSeparation
використовує chroot()
syscall, який WSL
наразі не підтримує.) /etc/ssh/sshd_config
, ви можете змінити PasswordAuthentication no
до PasswordAuthentication yes
.
Інакше вам доведеться налаштувати ключі SSH. /etc/ssh/sshd_config
і вийти. Запустити sudo visudo
для редагування
файл sudoers. Додайте рядок
$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
замінивши "$ USER" на ваше ім'я користувача Linux. Зберегти і вийти. Якщо visudo скаржиться, що ваші зміни недійсні, виправте їх поки не повідомляє, що вони дійсні; інакше ви можете зламати sudo на Вашої системи!
Створіть текстовий файл autostartssh.vbs
у Windows містять наступне:
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
autostartssh.vbs
на завантаженні системи. Використовуйте wscript.exe
як команду для запуску та місце розташування сценарію VBS як параметр. І ось і все - ваш комп'ютер з Windows повинен працювати з сервером Linux openssh!
UsePrivilegeSeparation = yes
, крім того, що потрібно також запустити sudo /bin/mkdir -p /var/run/sshd
(для створення каталогів поділу привілеїв) перед запуском sshd. Чи підтримує WLS тепер chroot (), чи існує обхідний шлях у джерелі openssh або це = No
встановлювати більше рекомендацій з безпеки? Крім того, вікно завдання, здається, працює тільки для мене, якщо мій користувач увійшов.
/etc/ssh/sshd_config
що читається Port 22
і переключитися на Port 8822
. Однією з причин цього є Windows, який запускає якийсь SSH-процес на 22. Я бачив пропозиції, які говорять, що немає ніяких проблем з відключенням, але мені було легше просто перемикати порт WSL SSH.
Мені потрібно було зробити те ж саме.
Ось як завантажитися підсистема Ubuntu Linux з усіма службами cron під час завантаження Windows; забезпечують засоби для перезавантаження підсистеми Linux.
Я успішно розміщую сервер openssh, nginx & amp; База даних mariadb на нашому сервері.
Встановіть підсистему Linux
Вставити:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Встановіть Ubuntu з Магазину Windows.
Вилучити запрошення пароля sudo (обов'язково)
Вставити:
sudo sed -i "s/%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/g" /etc/sudoers
Увімкнути вхід до пароля SSH (необов'язково)
Вставити:
sudo sed -i '/StrictModes yes/c\StrictModes no' /etc/ssh/sshd_config
sudo sed -i '/ChallengeResponseAuthentication/c\ChallengeResponseAuthentication no' /etc/ssh/sshd_config
sudo sed -i '/PasswordAuthentication/c\PasswordAuthentication yes' /etc/ssh/sshd_config
Автоматичне включення Windows під час запуску (потрібно, якщо у вас є пароль або RDP)
Перейдіть до
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Створіть новий рядок DefaultPassword
і записувати пароль користувача як значення.
Запустіть цикл bash / cron при запуску
linux.bat
в shell:startup
Вставити:
C:\Windows\System32\bash.exe -c 'while [ true ]; do sudo /usr/sbin/cron -f; done'
Додайте програми / служби до запуску на cron
sudo crontab -e
Додайте програми запуску, такі як openssh-сервер, nginx, mysql, php:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot . $HOME/.profile; /usr/sbin/sshd -D
#@reboot . $HOME/.profile; service php7.1-fpm start # Uncomment for php7.1 fpm
#@reboot . $HOME/.profile; service mysql start # Uncomment for mysql/mariadb
#@reboot . $HOME/.profile; service nginx start # Uncomment for nginx
Зберегти та вийти: ctrl x , потім натисніть y і введіть .
Перезавантажте підсистему Linux без перезавантаження Windows
Відкрити bash або SSH у
sudo service ssh restart
Це закриє поточний екземпляр і створить новий, застосовуючи cron.
Extra - Встановіть PHP 7.1 (не зовсім так прямо)
Виконайте наведені нижче команди для досить стандартної настройки:
mkdir /run/php && chmod -R 777 /run/php
sudo add-apt-repository ppa:ondrej/php && sudo apt update
PHPV=7.1 && sudo apt install --allow-unauthenticated -y php${PHPV}-fpm php${PHPV}-gd php${PHPV}-json php${PHPV}-mysqlnd php${PHPV}-curl php${PHPV}-intl php${PHPV}-mcrypt php${PHPV}-imagick php${PHPV}-zip php${PHPV}-xml php${PHPV}-mbstring
Запустіть команду нижче для налаштування "OwnCloud":
PHPV=7.1 && apt install --allow-unauthenticated -y php${PHPV}-redis redis-server php${PHPV}-ldap php${PHPV}-smbclient
Extra - Встановлення веб-сервера nginx
Запустіть команди нижче для налаштування бази з PHP7.1:
sudo add-apt-repository ppa:nginx/stable
sudo apt update && sudo apt -y install nginx
sudo sed -i 's:access_log /var/log/nginx/access.log;:access_log off;:g' /etc/nginx/nginx.conf
sudo sed -i '/index index.html/c\\tindex index.html index.php index.htm index.nginx-debian.html;' /etc/nginx/sites-available/default
STR='}\n\n\tlocation ~ \.php$ {\n\t\tinclude snippets\/fastcgi-php.conf;\n\t\tfastcgi_pass unix:\/var\/run\/php\/php7.1-fpm.sock;\n\t}'
sudo sed -i "0,/}/s//$STR\n/" /etc/nginx/sites-available/default
sudo service nginx restart
Extra - Встановіть базу даних mysql mariadb
Запустіть команди нижче для сервера бази даних mysql:
RELEASE=`lsb_release -a | tail -1 | cut -f2`
sudo apt install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository "deb [arch=i386,amd64,ppc64el] https://mirrors.evowise.com/mariadb/repo/10.3/ubuntu $RELEASE main"
sudo apt update && sudo apt --allow-unauthenticated -y install mariadb-server
Коли з'явиться запит, встановіть пароль користувача кореневої бази даних.
@poma відповідь дуже хороша, і те, що моя відповідь базується від. Я хотів би додати деякі покращення, хоча:
service
замість того, щоб викликати sshd
безпосередньо: 'sudo service ssh start'
замість 'sudo /usr/sbin/sshd -D'
. Таким чином, навіть якщо ви називаєте скрипт кілька разів, буде не більше одного sshd
процесу. Крім того, це легко убити іншим сценарієм, який виконується 'sudo service ssh stop'
. У файлі sudoers потрібно просто замінити /usr/sbin/sshd -D
с /usr/sbin/service
. sshd
безпосередньо, позбутися від -D
опції , тому що це поставить процес на передній план на невизначений термін. Якщо ви мені не вірите, просто зробіть це top
і ви побачите init
а sudo
процес за кожний виклик сценарію. Не забудьте видалити -D
також у файлі sudoers! autostartsshd.ps1
і вставте наступне: bash -c 'sudo service ssh start'
. Щоб виконати сценарій, клацніть правою кнопкою миші та натисніть Run with PowerShell
. Інший запит на переповнення стеків має подібні кроки: https://superuser.com/a/1114162/182590
Сподіваюся, що хтось допомагає :)
sudo service ssh start
а потім закрийте bash, він уб'є демон ssh. Принаймні, це те, що він зробив на момент написання мого керівництва.