เรื่องที่สองในบทความนี้ หากเราต้องการให้ทุกครั้งที่ Windows เปิดขึ้นมาแล้วสั่งให้ service sshd ทำงานทันที เพื่อให้เราใช้คำสั่ง ssh เข้ามายัง Ubuntu ใน Windows ได้
ตัวอย่าง จะติดตั้ง fog server ให้ใช้ IP 10.0.100.254 และ ตอบ N ทุกคำถาม Would you like … ตรงนี้ ซึ่งจะเกี่ยวข้องกับ DHCP server ว่า จะติดตั้งลงใน fog server มั้ย
ตรวจสอบ พร้อมแล้ว ก็กด Y และ Enter
สำหรับ Ubuntu 18.04 นั้น ถ้าเราติดตั้ง MySQL ไม่จำเป็นต้องตั้ง password เราก็ใช้คำสั่ง mysql เพื่อเข้าไปทำงานได้ ก็ต่อเมื่อ เราเป็น user ที่เป็น sudo จึงไม่ต้องตั้ง password แต่จะตั้งก็ได้ ไม่ผิด
# Don't function as a DNS server:
port=0
# Log lots of extra information about DHCP transactions.
log-dhcp
# Set the root directory for files available via FTP.
tftp-root=/tftpboot
# The boot filename, Server name, Server Ip Address
dhcp-boot=undionly.kpxe,,10.0.100.254
# Disable re-use of the DHCP servername and filename fields as extra
# option space. That's to avoid confusing some old or broken DHCP clients.
dhcp-no-override
# inspect the vendor class string and match the text to set the tag
dhcp-vendorclass=BIOS,PXEClient:Arch:00000
dhcp-vendorclass=UEFI32,PXEClient:Arch:00006
dhcp-vendorclass=UEFI,PXEClient:Arch:00007
dhcp-vendorclass=UEFI64,PXEClient:Arch:00009
# Set the boot file name based on the matching tag from the vendor class (above)
dhcp-boot=net:UEFI32,i386-efi/ipxe.efi,,10.0.100.254
dhcp-boot=net:UEFI,ipxe.efi,,10.0.100.254
dhcp-boot=net:UEFI64,ipxe.efi,,10.0.100.254
# PXE menu. The first part is the text displayed to the user. The second is the timeout, in seconds.
pxe-prompt="Booting FOG Client", 1
# The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
# Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI
# This option is first and will be the default if there is no input from the user.
pxe-service=X86PC, "Boot to FOG", undionly.kpxe
pxe-service=X86-64_EFI, "Boot to FOG UEFI", ipxe.efi
pxe-service=BC_EFI, "Boot to FOG UEFI PXE-BC", ipxe.efi
dhcp-range=10.0.100.254,proxy
ให้แทนที่ 10.0.100.254 ด้วย fog server IP ของคุณ แล้ว save ออกมาจากการแก้ไขไฟล์ แล้ว ตรวจสอบด้วยการรัน service ดูว่า ทำงานได้ ไม่ error
ตัวอย่าง จะติดตั้ง fog server ให้ใช้ IP 10.0.100.208 และ ตรงนี้ จะเกี่ยวข้องกับ DHCP server ว่า จะติดตั้งลงใน fog server มั้ย ในตัวอย่าง คือ router address ที่ใช้คือ 10.0.100.1 และเป็น DNS server ด้วย
ตรงนี้ สำหรับ FOG รุ่น 1.5.6 ขึ้นไป จะมีเพิ่มมาให้ตั้งชื่อ hostname ถ้าไม่ต้องการตั้งก็กด Enter
ตรวจสอบ พร้อมแล้ว ก็กด Y และ Enter
สำหรับ Ubuntu 18.04 นั้น ถ้าเราติดตั้ง MySQL ไม่จำเป็นต้องตั้ง password เราก็ใช้คำสั่ง mysql เพื่อเข้าไปทำงานได้ ก็ต่อเมื่อ เราเป็น user ที่เป็น sudo จึงไม่ต้องตั้ง password แต่จะตั้งก็ได้ ไม่ผิด
ในหน้าจอการติดตั้งจะมีคำถามให้ตอบ Y หรือ N ไปเรื่อย ๆ ซึ่ง เราจะต้องเลือกว่าจะใช้งาน fogproject แบบใด ระหว่าง 2 แบบนี้
แบบที่ 1 ติดตั้ง FOG Project แบบมี DHCP Server ด้วย เหมาะสำหรับห้องคอมพิวเตอร์ที่ผู้ดูแลจัดการ network และ IP ของ Windows ได้เอง หรือ เหมาะสำหรับผู้ที่ต้องการจะตั้ง DHCP SERVER เพื่อให้บริการ IP แก่ Windows ด้วยตนเอง
แบบที่ 2 ติดตั้ง FOG Project แบบใช้ Proxy DHCP เหมาะสำหรับห้องคอมพิวเตอร์ที่ผู้ดูแลไม่ได้จัดการ network และ Windows จะได้รับ IP จาก DHCP Server ของ network หรือ ไม่สามารถตั้ง DHCP Server ขึ้นมาใช้งานเองได้
วิธีลบ FOG อย่างสมบูรณ์ หากต้องการย้อนการทำงาน กลับไปเริ่มต้นขั้นตอนติดตั้งใหม่ ให้ทำคำสั่งนี้
แนะนำวิธีติดตั้ง Windows Subsystem for Linux ใน Windows 10 รุ่น 1903 และวิธีเปิด sshd service อัตโนมัติ
ขั้นตอน 1.เปิด Featured Windows Subsystem for Linux ให้ไปที่ Control Panel เลือก Program เลือก Turn Windows features on or off ทำเครื่องหมายเพื่อเลือก Windows Subsystem for Linux รอสักครู่ จากนั้นจะมีคำสั่งให้ reboot เพื่อเริ่มใช้งานได้
Open Control PanelSelect ProgramSelect Turn Windows features on or offCheck Windows Subsystem for LinuxNext, reboot Windows
2.เปิด Microsoft Store App ใส่คำว่า ubuntu ในช่อง search เลือก Ubuntu 18.04 LTS App คลิก Get ถาม Sign in with Microsoft ให้ตอบ No, thanks จากนั้นรอ
Open Microsoft StoreSelect Ubuntu 18.04 LTS AppGetAnswer with “No, thanks”On downloading
3.เปิด Ubuntu 18.04 LTS ที่ปุ่ม Windows Start ให้คีย์คำว่า ubuntu แล้วเลือก Run ad administrator จะใช้เวลาสักครู่ แล้วจะให้เราตั้ง username และ password ที่ไม่จำเป็นต้องเหมือนกับ username ที่ sign in เข้า Windows
Open Ubuntu with Run as administratorFirst time Installing
4.เปิดอนุญาตให้มีการเชื่อมต่อผ่าน sshd ในครั้งแรกที่คีย์คำสั่งว่า sudo service ssh start
เราจะไปตั้งค่าให้ startssh.sh ทำงานด้วย Task Schedule เปิด Task Scheduler เลือก Run as administrator เลือก Task Scheduler Library ดูด้านขวา เลือกคำสั่ง Create Task
Open Task ScheduleSelect Create Task
แท็บแรกคือ General ตั้ง Name ว่า startssh เลือก Run whether user is logged on or not เลือก Run with highest privileges ที่ช่อง Configure for เลือก Windows 10
General Tab
แท็บสองคือ triggers เลือก New ที่ช่อง Begin the task เลือก At startup ที่ช่อง Advanced Settings ด้านล่าง เลือก Enabled
Triggers Tab
แท็บสามคือ Actions เลือก New ที่ช่อง Action เลือก Start a program ที่ช่อง Program/script ใส่คำว่า bash และที่ช่อง Add arguments ใส่ข้อความ /mnt/c/startssh.sh
Action Tab
จะมี pop up window ถาม username กับ password ที่จะรัน Task นี้ ก็ใส่ให้ถูก แล้วปิดหน้าต่าง Task Schedule
Enter password
เมื่อมาถึงตรงนี้ เราก็ได้ตั้งค่าให้ Start sshd เมื่อ Windows Start เสร็จแล้ว
ทดสอบโดยการ reboot Windows เพื่อดูว่า Task Schedule ทำ task ขื่อ startssh ให้อัตโนมัติสำเร็จหรือไม่ โดยการทดสอบ ssh เข้าจาก PC อีกเครื่อง สมมติว่า เครื่อง Windows มี IP 192.168.6.221
ssh john@192.168.6.221
หลังจากตอบ Yes แล้วใส่ password ผ่าน ก็ให้พิมพ์คำสั่ง exit เป็นอันเสร็จสิ้นการทดสอบ หากได้ข้อความประมาณว่า ssh: connect to host 192.168.6.221 port 22: Resource temporarily unavailable ก็ต้องกลับไปตรวจสอบว่า ทำไมจึงเปิดบริการ sshd ไม่สำเร็จ ลองเช็ค Windows Firewall
ต่อไปเป็นการนำ ssh key (id_rsa.pub) จากเครื่อง server ไปฝากไว้ที่ Windows Subsystem for Linux เพื่อเป็น publickey ใช้แทนการใส่ password เมื่อเราจะส่งคำสั่งเข้าไปจัดการ Windows ผ่านทาง Windows Subsystem for Linux เช่น reboot Windows เป็นต้น
ตรวจสอบที่ server จะต้องมีไฟล์ id_rsa.pub ใน ~/.ssh/ ถ้ายังไม่ได้สร้าง key ก็ให้ใช้คำสั่งนี้
วิธีที่ได้นำเสนอนี้ จะนำไปเป็นส่วนหนึ่งในการควบคุม Windows PC ในห้องบริการคอมพิวเตอร์ ซึ่งเราจะประยุกต์ให้เป็นการติดตั้งผ่าน shell script ไม่ต้องคีย์ทีละคำสั่ง