जवाबों:
उस के लिए एक ट्यूटोरियल मिला aseering द्वारा:
यह मूल रूप से चर्चा की गई थी और यहाँ github उपयोगकर्ताओं imjakey, fpqc, qris, therealkenc, Manouchehri, और aseering (स्वयं) द्वारा हल किया गया था:
https://github.com/Microsoft/BashOnWindows/issues/612
ध्यान दें कि sshd को चलाने के सुरक्षा निहितार्थ हैं। जब तक WSL के सुरक्षा मॉडल को बेक करने में अधिक समय नहीं लगता, तब तक आपको यह मान लेना चाहिए कि जो कोई भी आपके विंडोज बॉक्स में ssh कर सकता है, उसे लिनक्स-स्तर की अनुमति के बावजूद, किसी भी कमांड को Windows उपयोगकर्ता के sshd के रूप में चलाने की अनुमति है। (अभ्यास में संभवतः अनुमतियाँ इससे अधिक प्रतिबंधात्मक होती हैं, लेकिन WSL का प्रारंभिक सुरक्षा मॉडल बहुत परिष्कृत होने का इरादा नहीं है।)
गीथूब से निर्देशों को एकत्र करने का प्रयास:
sudo dpkg-reconfigure
openssh-serverबैश शेल में चलाकर उत्पन्न करेंsudo nano /etc/ssh/sshd_config; UsePrivilegeSeparation yesपढ़ने के लिए लाइन
संपादित करें UsePrivilegeSeparation no। (यह आवश्यक है क्योंकि
syscall UsePrivilegeSeparationका उपयोग करता है chroot(), जिसे WSL वर्तमान में समर्थन नहीं करता है।)/etc/ssh/sshd_config, आप बदलने के PasswordAuthentication noलिए चुन सकते हैं
PasswordAuthentication yes। अन्यथा आपको SSH कीज़ सेट करनी होंगी।/etc/ssh/sshd_configऔर बाहर निकलें।sudo visudoSudoers फ़ाइल को संपादित करने के लिए चलाएँ । लाइन जोड़ें
$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
अपने लिनक्स उपयोगकर्ता नाम के साथ "$ USER" की जगह। सुरषित और बहार। यदि विडोको शिकायत करता है कि आपके परिवर्तन अमान्य हैं, तो उन्हें तब तक ठीक करें जब तक यह रिपोर्ट न हो जाए कि वे वैध हैं; अन्यथा आप अपने सिस्टम पर sudo तोड़ सकते हैं!
autostartssh.vbsWindows में एक पाठ फ़ाइल बनाएँ
जिसमें निम्नलिखित हैं:
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 स्क्रिप्ट स्थान पर कमांड के रूप में।और वह यह है - आपका विंडोज कंप्यूटर एक लिनक्स ओपनश सर्वर चल रहा होना चाहिए!
UsePrivilegeSeparation = yes, सिवाय इसके कि किसी को भी sudo /bin/mkdir -p /var/run/sshdsshd शुरू करने से पहले (विशेषाधिकार अलगाव निर्देशिकाओं को बनाने के लिए) चलाने की आवश्यकता है । क्या अब WLS चेरोट का समर्थन करता है (), क्या ओपनशॉ स्रोत में एक जगह पर वर्कअराउंड है, या = Noएक सुरक्षा सिफारिश की सेटिंग अधिक है? यदि मेरा उपयोगकर्ता लॉग इन है, तो भी, विंडो कार्य केवल मेरे लिए काम करता है।
/etc/ssh/sshd_configपढ़ें Port 22और उसमें स्विच करें Port 8822। इसका एक कारण यह है कि विंडोज 22 पर SSH प्रक्रिया को चला रहा है। मैंने सुझाव दिया है कि इसे अक्षम करने में कोई समस्या नहीं है, लेकिन मैंने केवल WSL SSH पोर्ट को स्विच करना आसान पाया।
मुझे एक ही काम करने की जरूरत है।
यहाँ विंडोज बूट पर क्रोन की सभी सेवाओं के साथ उबंटू लिनक्स सबसिस्टम को बूट करने का तरीका बताया गया है और लिनक्स सिस्टम को 'रिबूट' करने का साधन प्रदान किया गया है।
मैं सफलतापूर्वक अपने सर्वर पर ओपनश-सर्वर, नगनेक्स और मारीडब डेटाबेस की मेजबानी कर रहा हूं।
लिनक्स सबसिस्टम स्थापित करें
पेस्ट करें:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
विंडोज स्टोर से उबंटू स्थापित करें।
निकालें 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
स्टार्ट पर विंडोज ऑटोलॉगिन (यदि आपके पास पासवर्ड या आरडीपी है)
के लिए ब्राउज़ करें
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
एक नया स्ट्रिंग बनाएं DefaultPasswordऔर मूल्य के रूप में उपयोगकर्ता का पासवर्ड लिखें।
प्रारंभ पर बैश / क्रोन लूप चलाएं
linux.batमेंshell:startupपेस्ट करें:
C:\Windows\System32\bash.exe -c 'while [ true ]; do sudo /usr/sbin/cron -f; done'
क्रोन पर स्टार्टअप में ऐप / सेवाएं जोड़ें
sudo crontab -eस्टार्टअप ऐप जैसे कि ओपनश-सर्वर, नग्नेक्स, माईस्क्, 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
सहेजें और बाहर निकलें: ctrlxफिर दबाएँ yऔर enter।
विंडोज को रिबूट किए बिना लिनक्स सबसिस्टम को रिबूट करें
ओपन बैश या एसएसएच इन
sudo service ssh restart
यह वर्तमान उदाहरण को बंद कर देगा और एक नया एप्रेन क्रोन बना देगा।
अतिरिक्त - 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
एक 'ओनक्लाउड' सेटअप के लिए नीचे दिया गया कमांड चलाएँ:
PHPV=7.1 && apt install --allow-unauthenticated -y php${PHPV}-redis redis-server php${PHPV}-ldap php${PHPV}-smbclient
अतिरिक्त - 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
अतिरिक्त - mariadb के mysql डेटाबेस को स्थापित करें
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
संकेत दिए जाने पर, रूट डेटाबेस उपयोगकर्ता पासवर्ड सेट करें।
@ पोमा का उत्तर बहुत अच्छा है, और यह है कि मेरा उत्तर क्या है। मैं इसमें कुछ सुधार जोड़ना चाहता हूं, हालांकि:
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।एक और स्टैक ओवरफ्लो प्रश्न के समान चरण हैं: /superuser//a/1114162/182590
आशा है कि किसी की मदद करता है :)
sudo service ssh startऔर फिर इसे बंद करते हैं तो यह ssh डेमॉन को मार देगा। कम से कम यह है कि यह मेरे गाइड लिखने के क्षण में क्या किया।
bash -c "echo [password] | service ssh start"विंडोज स्टार्टअप स्क्रिप्ट में डाल दिया , और [पासवर्ड] स्थानापन्न करने के लिए अपने स्वयं के पासवर्ड का उपयोग करें
sudoकीवर्ड भी शामिल हो , जो आपके वाक्य का अर्थ है)। यह सिर्फ काम नहीं करता है। ऐसा नहीं है कि आप कभी भी अपना पासवर्ड प्लेनटेक्स्ट वैसे भी स्टोर करें!
@ पोमा और @ हिंट्रोन जवाब बहुत अच्छे हैं।
मैं विंडोज टास्क शेड्यूलर में ssh टास्क को जोड़ने के अंतिम बिंदु के विवरण का विस्तार करना चाहूंगा क्योंकि इसमें कुछ विकल्पों को बदलने की आवश्यकता होती है:
इसका उपयोग प्रत्यक्ष बैश आह्वान के लिए किया जाता है। इसे vbs या पॉवरशेल स्क्रिप्ट में लपेटने की कोई आवश्यकता नहीं है।
मैं उन कारणों के लिए सेवा कमांड का उपयोग करता हूं जो @Hintron ने समझाया था। इसके अतिरिक्त प्रत्यक्ष sshd मंगलाचरण त्रुटि देता है
गुम विशेषाधिकार विशेषाधिकार निर्देशिका: / var / run / sshd
ऐसे मामले में इसे इस प्रविष्टि को sudo visudoकमांड द्वारा जोड़ा जाना चाहिए
ALL ALL = (root) NOPASSWD: /usr/sbin/service ssh *
यह भी ध्यान दें कि यहां सभी उपयोगकर्ता (पहला कॉलम) sshd शुरू या बंद कर सकते हैं। यदि आपका इस विंडोज मशीन का केवल एक उपयोगकर्ता है, तो यह ठीक होना चाहिए।
नाम से एक फ़ाइल बनाएँ wsl_setup.batऔर अनुसरण के रूप में सामग्री जोड़ें
wsl -u root -e sudo service ssh start
wsl -u root -e sudo service nginx start
wsl_setup.batविंडोज़ स्टार्टअप फ़ोल्डर विंडोज़ -10-चेंज-स्टार्टअप-ऐप्स में फ़ाइल जोड़ें
पुनरारंभ करें और अपने विंडोज़ खाते में लॉग इन करें (हाँ, आपको लॉग इन करने की आवश्यकता है)