উইন্ডোজে (শুরুতে) উবুন্টু পরিষেবাটি কীভাবে চালানো যায়?


22

আমি উইন্ডোজ স্টার্টআপে লিনাক্স সাবসিস্টেমের (এসএসএইচ সার্ভার) উইন্ডোতে উবুন্টু-তে চালু করতে চাই। সমস্যাটি হ'ল বাশ উইন্ডোটি বন্ধ হয়ে গেলে সমস্ত লিনাক্স প্রক্রিয়া সমাপ্ত হয়।

বাশ উইন্ডো ব্যতীত পটভূমিতে লিনাক্স প্রক্রিয়া স্থায়ীভাবে চালিত করার কোনও উপায় আছে কি?

উত্তর:


26

এরিয়ারিং করে এর জন্য একটি টিউটোরিয়াল পেয়েছি:

এটি মূলত গিথুব ব্যবহারকারী ইমজাকি, এফপিকিউসি, কিউরিস, থ্যালাকেনক, মানুচেহরি এবং আজারিং (নিজেই) এখানে ছড়িয়ে দিয়েছিলেন:

https://github.com/Microsoft/BashOnWindows/issues/612

নোট করুন যে sshd চালানোর ক্ষেত্রে সুরক্ষা জড়িত রয়েছে। ডাব্লুএসএল এর সুরক্ষা মডেলটি বেক করার জন্য আরও দীর্ঘ সময় না আসা পর্যন্ত আপনার ধরে নেওয়া উচিত যে আপনার উইন্ডোজ বাক্সে যে কেউ প্রবেশ করতে পারে তার লিনাক্স-স্তরের অনুমতি নির্বিশেষে উইন্ডোজ ব্যবহারকারীর জন্য sshd হিসাবে যে কোনও কমান্ড করার অনুমতি রয়েছে। (অনুশীলনের চেয়ে অনুমতিগুলি সম্ভবত আরও নিয়ন্ত্রণমূলক, তবে ডাব্লুএসএল এর প্রাথমিক সুরক্ষা মডেল খুব পরিশীলিত হওয়ার উদ্দেশ্যে নয়))

গিথুব থেকে নির্দেশাবলী একত্রিত করার চেষ্টা করা:

  • sudo dpkg-reconfigure openssh-serverব্যাশ শেল চালিয়ে এসএসএইচ হোস্ট কী তৈরি করুন
  • চালান sudo nano /etc/ssh/sshd_config; UsePrivilegeSeparation yesপড়ার জন্য লাইনটি সম্পাদনা করুন UsePrivilegeSeparation no। (এটি প্রয়োজনীয় কারণ সিস্কেল UsePrivilegeSeparationব্যবহার করে chroot(), যা ডাব্লুএসএল বর্তমানে সমর্থন করে না))
  • এখনও সম্পাদনা করার সময় /etc/ssh/sshd_config, আপনি এতে বেছে নিতে বেছে নিতে PasswordAuthentication noপারেন PasswordAuthentication yes। অন্যথায় আপনাকে এসএসএইচ কীগুলি সেট আপ করতে হবে।
  • সংরক্ষণ করুন /etc/ssh/sshd_configএবং প্রস্থান করুন।
  • sudo visudoসুডোর ফাইল সম্পাদনা করতে চালান । লাইন যুক্ত করুন

    $USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
    

    আপনার লিনাক্স ব্যবহারকারীর সাথে "$ ব্যবহারকারী" প্রতিস্থাপন করা হচ্ছে। সংরক্ষণ করুন এবং প্রস্থান. যদি ভিসুডো অভিযোগ করে যে আপনার পরিবর্তনগুলি অবৈধ, অন্যথায় আপনি আপনার সিস্টেমে sudo ব্রেক করতে পারেন!

  • উইন্ডোজের দিকে, 22 বন্দরে আগত ট্র্যাফিকের অনুমতি দেওয়ার জন্য উইন্ডোজ ফায়ারওয়াল (এবং কোনও তৃতীয় পক্ষের ফায়ারওয়ালগুলি যা আপনি চলতে পারেন) সম্পাদনা করুন Because কারণ এটি একটি সুপার-সুরক্ষিত সেটআপ নয়, তাই কেবলমাত্র বাড়ি থেকে আগত ট্র্যাফিকের অনুমতি দেওয়ার পরামর্শ দিই ( ব্যক্তিগত) এবং ডোমেন নেটওয়ার্কগুলি পাবলিক ইন্টারনেট থেকে নয়।
  • autostartssh.vbsনিম্নলিখিতগুলিতে উইন্ডোতে একটি পাঠ্য ফাইল তৈরি করুন :

    set ws=wscript.createobject("wscript.shell")
    ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
    
    • স্ক্রিপ্টে ডাবল ক্লিক করুন। এটি sshd শুরু করা উচিত; আপনার উইন্ডোজ মেশিনে প্রবেশ করতে সক্ষম হওয়া উচিত।
    • উইন্ডোজের টাস্ক শিডিয়ুলারটি খুলুন। autostartssh.vbsসিস্টেম বুট চলমান একটি টাস্ক যুক্ত করুন । ব্যবহারের wscript.exeচালান এবং প্যারামিটার হিসাবে VBS স্ক্রিপ্ট অবস্থান কমান্ড হিসাবে।

এবং এটি হ'ল - আপনার উইন্ডোজ কম্পিউটারে একটি লিনাক্স ওপেনশ সার্ভার চালানো উচিত!


ভিবিএস স্ক্রিপ্ট আমার পক্ষে কিছুই করেনি। sshd রিসোর্স মনিটরের নেটওয়ার্ক ট্যাবে প্রদর্শিত হচ্ছে না।
মেগামাইকু

আমি এএ প্রক্রিয়া প্রেরণকারী github.com/131/dispatcher লিখেছি যে 'উইন্ডোজ ছাড়াই আপনাকে বাশ দেওয়ার সুযোগ দেয়।
131

@ মেগামাইকু: আমারও একই সমস্যা ছিল। চালিত ছোট্ট স্নিপড এসএসডি চালানোর জন্য (অদৃশ্য) পাসওয়ার্ড প্রম্পটে আটকে গেল কারণ আমি "ভিসুডো" অংশটি সঠিকভাবে করি নি। প্রথমে আমি sudoers ফাইলের মাঝখানে কোথাও NOPASSWD লাইন যুক্ত করেছি। আমি একবার এটি নীচে সরানো এটি কাজ করে!
এলটিজ্যাক্স

1
এটি বর্তমানে sshd শুরু করার আগে (বিশেষাধিকার পৃথকীকরণ ডিরেক্টরিগুলি তৈরি করার জন্য) UsePrivilegeSeparation = yesচালানোর প্রয়োজন ছাড়া এটি নিয়ে কাজ করছে sudo /bin/mkdir -p /var/run/sshd। ডাব্লুএলএস কি এখন ক্রুটকে সমর্থন করে (), ওপেনস্যাশের উত্সে কোনও কার্যকারিতা রয়েছে, বা = Noসুরক্ষার সুপারিশের চেয়ে বেশি কিছু স্থাপন করা হচ্ছে ? এছাড়াও, উইন্ডোজ টাস্কটি কেবলমাত্র আমার জন্য কাজ করবে যদি আমার ব্যবহারকারীর লগ ইন থাকে
init_js

এটি দুর্দান্তভাবে কাজ করেছে। আমি পরামর্শ দেব, জিনিসগুলি আরও সহজ করার জন্য, এসএসএইচ বন্দরটি শোনার জন্য পোর্টটি সরিয়ে ফেলুন, যেমন 3322, এলোমেলো কিছু। /etc/ssh/sshd_configপড়তে থাকা লাইনটি মন্তব্য করুন Port 22এবং এতে স্যুইচ করুন Port 8822। এর একটি কারণ উইন্ডোজ ২২-তে কোনও প্রকার এসএসএইচ প্রক্রিয়া চালাচ্ছে I've
নিকেলক

4

আমারও একই কাজ করা দরকার

উইন্ডোজ বুটের উপর ক্রোন এর সমস্ত পরিষেবা সহ উবুন্টু লিনাক্স সাবসিস্টেমটি কীভাবে বুট করা যায় এবং লিনাক্স সাব সিস্টেমটি 'রিবুট' করার উপায় সরবরাহ করে তা এখানে রয়েছে।

আমি আমাদের সার্ভারে ওপেনশ-সার্ভার, এনগিনেক্স এবং মারিয়্যাডবি ডাটাবেসটি সফলভাবে হোস্ট করছি।

লিনাক্স সাবসিস্টেম ইনস্টল করুন

  • প্রশাসক হিসাবে পাওয়ারশেল খুলুন
  • আটকান:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    
  • উইন্ডোজ স্টোর থেকে উবুন্টু ইনস্টল করুন।

Sudo পাসওয়ার্ড প্রম্পট সরান (প্রয়োজনীয়)

  • ওপেন ব্যাশ (লিনাক্স সাবসিস্টেম এটি ইনস্টল করে)
  • আটকান:

    sudo sed -i "s/%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/g" /etc/sudoers
    

এসএসএইচ পাসওয়ার্ড লগইন সক্ষম করুন (alচ্ছিক)

  • খোলা বাশ
  • আটকান:

    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
  • ন্যানো নির্বাচন করুন (বা যে কোনও সম্পাদক আপনি কীভাবে সংরক্ষণ করবেন তা জানেন)
  • ওপেনশ-সার্ভার, এনগিনেক্স, মাইএসকিএল, পিএইচপি এর মতো প্রারম্ভিক অ্যাপ্লিকেশন যুক্ত করুন:

    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
    
  • এটি বর্তমান উদাহরণটি বন্ধ করে দেবে এবং ক্রোন প্রয়োগকারী একটি নতুন তৈরি করবে।

অতিরিক্ত - পিএইচপি 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
    

অতিরিক্ত - এনগিনেক্স ওয়েব সার্ভার ইনস্টল করুন

  • পিএইচপি 7.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
    

অতিরিক্ত - মারিয়্যাডবি'র মাইএসকিএল ডাটাবেস ইনস্টল করুন

  • মাইএসকিএল ডাটাবেস সার্ভারের জন্য নীচের কমান্ডগুলি চালনা করুন:

    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
    
  • যখন অনুরোধ করা হয়, একটি রুট ডাটাবেস ব্যবহারকারী পাসওয়ার্ড সেট করুন।


খুব চালাক! এবং সুনির্দিষ্ট নির্দেশাবলী, ধন্যবাদ। "Sudo" পাসওয়ার্ড পুরোপুরি এড়ানো এড়ানোর কোনও উপায় আছে কি?
গ্রেগ

আমি আর লিনাক্স সাব সিস্টেম ব্যবহার করার পরামর্শ দিচ্ছি না। অ্যাপ্লিকেশনটির সামঞ্জস্যতা সফল হয়, এটি অস্থির এবং সরঞ্জামগুলি যেমন তেমন পারে তেমন কাজ করে না - ব্যাশ ইন্টিগ্রেশন ইত্যাদি পরিবর্তে এমএসএস 2 ব্যবহার করে এটি আপনাকে দুর্দান্ত বাশ শেল সরবরাহ করে এবং এর মাধ্যমে আপনাকে প্রচুর অ্যাপ্লিকেশন ইনস্টল করতে দেয় প্যাকম্যান প্যাকেজ ম্যানেজার - সর্বোপরি, সমস্ত অ্যাপ্লিকেশনগুলি .exe এর। আপনাকে যা করতে হবে তা হ'ল উইন্ডোতে আপনার পরিবেশের ভেরিয়েবলগুলিতে বিন ডিরেক্টরিগুলি যুক্ত করা। আমি উইন্ডোজ এবং এখন বিপরীতে লিনাক্স কমান্ড ব্যবহার করি। আমার উইন্ডোজ সমস্ত স্ক্রিপ্টিং বাশ মধ্যে সম্পন্ন হয়েছে।
নাম

1

@ পোমার উত্তরটি খুব ভাল, এবং আমার উত্তরটি এর ভিত্তিতে তৈরি। আমি এতে কিছু উন্নতি যুক্ত করতে চাই, যদিও:

  • ব্যবহার করুন serviceপরিবর্তে কলিং sshdসরাসরি: 'sudo service ssh start'পরিবর্তে 'sudo /usr/sbin/sshd -D'। এইভাবে, আপনি একাধিকবার স্ক্রিপ্ট কল করলেও কেবলমাত্র সর্বাধিক একটি sshdপ্রক্রিয়া হবে। এছাড়াও এটি চালানো অন্য স্ক্রিপ্টের সাহায্যে এটি হত্যা করা সহজ 'sudo service ssh stop'। সুডোয়ার্স ফাইলে, আপনাকে কেবল এটির /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 ডিমনকে হত্যা করবে। আমার গাইড লেখার মুহুর্তে এটি কি ঘটেছে।
পোমা

@ পোমা উইন্ডোজ 10 এর সর্বশেষ আপডেটের সাথে, লিনাক্স অ্যাপ্লিকেশনগুলি এখন পটভূমিতে চলতে পারে, তাই আমার মনে হয় এটি ঠিকঠাক কাজ করা উচিত।
জ্যাকবডেদেভ

1

করা bash -c "echo [password] | service ssh start"উইন্ডোজ স্টার্টআপ লিপিতে, এবং [পাসওয়ার্ড] প্রতিস্থাপন আপনার নিজস্ব উবুন্টু পাসওয়ার্ড ব্যবহার


আপনি কেবল একটি সুডো প্রম্পটে একটি পাসওয়ার্ড পাইপ করতে পারবেন না (এটি নয় যে আপনার কমান্ডটিতে sudoআপনার বাক্যটি বোঝায় এমন প্রয়োজনীয় কীওয়ার্ডও রয়েছে )। এটি ঠিক কাজ করে না। এমন নয় যে কোনওভাবেই আপনার পাসওয়ার্ডটি সরলপদে সংরক্ষণ করা উচিত!
adam_0

1

@ পোমা এবং @ হিস্ট্রন উত্তরগুলি দুর্দান্ত।

আমি উইন্ডোজ টাস্ক শিডিয়ুলারে ssh টাস্ক কীভাবে যুক্ত করব তার শেষ পয়েন্টের বর্ণনাটি প্রসারিত করতে চাই কারণ এতে কিছু বিকল্প স্যুইচিংয়ের প্রয়োজন:

  • "টাস্ক শিডিয়ুলার" চালান। বাম তালিকায় "টাস্ক শিডিয়ুলার (স্থানীয়)" নির্বাচন করুন, তারপরে "অ্যাকশন" মেনুতে যান এবং "টাস্ক তৈরি করুন"।
  • সাধারন ট্যাব:
    • নাম: "ssh"
    • "ব্যবহারকারী লগ ইন আছে কিনা তা পরিচালনা করুন" নির্বাচন করুন
  • ট্রিগার ট্যাব:
    • নতুন
      • কাজটি শুরু করুন: "শুরুতে"
  • ক্রিয়া ট্যাব:
    • নতুন
      • প্রোগ্রাম / স্ক্রিপ্ট: সি: \ উইন্ডোজ \ System32 ash bash.exe
      • যুক্তি যুক্ত করুন (alচ্ছিক): -c "sudo / usr / sbin / পরিষেবা ssh শুরু"
  • শর্তাবলী:
    • কম্পিউটারটি এসি পাওয়ারে থাকলে কেবল টাস্কটি নির্বাচন করুন
  • সেটিংস
    • "কাজটি যদি এটির চেয়ে বেশি চলে তবে থামিয়ে দিন"

এটি সরাসরি ব্যাশ অনুরোধ ব্যবহৃত হয়। এটিকে ভিবিএস বা পাওয়ারশেল স্ক্রিপ্টগুলিতে মোড়ানোর দরকার নেই।

আমি @ হিন্ট্রন যে কারণে ব্যাখ্যা করেছে তার জন্য আমি পরিষেবা কমান্ড ব্যবহার করি। অতিরিক্তভাবে সরাসরি sshd অনুরোধ ত্রুটি দেয়

অনুপস্থিত পৃথকীকরণ ডিরেক্টরি: / var / রান / sshd হারিয়েছে

এই ক্ষেত্রে এটি sudo visudoকমান্ড দ্বারা এই এন্ট্রি যুক্ত করা উচিত

ALL ALL = (root) NOPASSWD: /usr/sbin/service ssh *

এছাড়াও লক্ষ করুন যে এখানে সমস্ত ব্যবহারকারী (প্রথম কলাম) sshd শুরু বা বন্ধ করতে পারে। যদি আপনি এই উইন্ডোজ মেশিনের কেবলমাত্র একজন ব্যবহারকারী হন তবে এটি ঠিক করা উচিত।


1
  1. নামে একটি ফাইল তৈরি করুন এবং নিম্নলিখিত wsl_setup.batহিসাবে সামগ্রী যুক্ত করুন

    wsl -u root -e sudo service ssh start
    wsl -u root -e sudo service nginx start
    
  2. যোগ wsl_setup.batকরার জন্য উইন্ডোজ স্টার্টআপ ফোল্ডার ফাইল উইন্ডোজ -10-পরিবর্তন-সূচনার-অ্যাপ্লিকেশান

  3. আপনার উইন্ডোজ অ্যাকাউন্টটি পুনরায় চালু করুন এবং লগ ইন করুন (হ্যাঁ, আপনাকে লগ ইন করতে হবে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.