การสร้างรหัสผ่านเข้าสู่ระบบระหว่างทำการสร้าง EC2 Instance โดยใช้ UserData

เราสามารถกำหนดรหัสผ่านใน UserData ระหว่างทำการสร้าง EC2 Instance ได้อย่างง่ายดาย เพียงแค่ Copy Code แล้ววางใน UserData ก็จะทำให้เราสามารถเข้าใช้งาน Server Amazon Linux 2 ในฐานะผู้ใช้ที่มีสิทธิ์ root ด้วย Password ของเราได้อีกด้วย

สวัสดีเพื่อนๆ ชาว AWS Service ทุกท่านด้วยครับ ผมป๊อปครับ

ในบทความนี้ผมได้เขียนอธิบายเกี่ยวกับ การสร้างรหัสผ่านเข้าสู่ระบบระหว่างทำการสร้าง EC2 Instance โดยใช้ UserData ครับ เข้าไปดูกันเลย

สร้างรหัสผ่านเข้าสู่ระบบระหว่างทำการสร้าง EC2 Instance โดยใช้ UserData

มาที่เมนูด้านซ้าย เลือกInstances
Instance-select

คลิกLaunch instances
Ins-win-1

Step 1: Choose an Amazon Machine Image (AMI) คือ Instance จะมีเซิร์ฟเวอร์ให้เลือกใช้มากมาย เช่น macOS, Red Hat, SUSE Linux, Ubuntu, Microsoft Windows, Debian เป็นต้น ซึ่งในบล็อกนี้จะใช้ Amazon Linux 2 AMI (HVM) ในการติดตั้ง

» Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type คลิกSelect
create_instance_userdata-1

Step 2: Choose an Instance Type คือ เราสามารถเลือก Type CPU Memory ที่จะนำไปใช้งานได้ตามความต้องการ ไม่ว่าเว็บไซต์จะมีขนาดเล็กหรือขนาดใหญ่ ก็สามารถเลือกขนาดความจุของ CPU Memory ได้ตามความเหมาะสม

» เลือก Family => t3a | Type => t3a.nano | vCPUs => 2 | Memory => 0.5(สามารถเลือกใช้งานได้ตามความต้องการ)
» คลิกNext: Configure Instance Details
create_instance_userdata-2

Step 3: Configure Instance Details

» เลื่อนลงมาด้านล่างสุดที่หัวข้อ User data จากนั้นคัดลอก Code ด้านล่างนี้วางในช่องว่าง และเปลี่ยน your_password ให้เป็นรหัสของคุณ เช่นtest2022เป็นต้น

#cloud-config
password: your_password
chpasswd: { expire: False }
ssh_pwauth: True

» คลิกNext: Add Storage
userdata_password-1

Step 4: Add Storage คือ ในส่วนของ Size (GiB) เราสามารถเพิ่ม Storage ได้ โดยค่าเริ่มต้นจะเป็น 8GB » คลิกNext: Add Tags
create_instance_userdata-4

Step 5: Add Tags » คลิกAdd Tage
create_instance_userdata-5

» Key:Name | Value:tinnakorn-password-auth(ใส่ชื่ออะไรก็ได้)
» คลิกNext: Configure Security Group
userdata_password-2

Step 6: Configure Security Group คือ การตั้งค่า My IP เพื่อจำกัดการเชื่อมต่อ SSH จากทุกตำแหน่ง ซึ่งในส่วนนี้จะทำให้สามารถเชื่อมต่อ SSH จาก My IP (ที่อยู่ IP ปัจจุบันของคุณ) ได้เท่านั้น และในส่วนของ HTTP จะใช้ในการแสดงผลหน้าเว็บไซต์นั่นเอง

» เปลี่ยนชื่อ Security group name กับ Description เป็นชื่ออะไรก็ได้ เช่นtinnakorn-password-auth
» เปลี่ยน Type SSH ให้เป็น Source:My IP
» คลิกReview and Launch
userdata_password-3

Step 7: Review Instance Launch » คลิกLaunch
userdata_password-4

ในส่วนของ POPUP ให้ทำตามขั้นตอนนี้
» เปลี่ยน Choose an existing key pair ให้เป็นProceed without a key pairแล้ว Select a key pair จะหายไป
» คลิก Checkbox
» คลิกLaunch Instances
userdata_password-5

ถ้ามีข้อความแจ้งเตือนสีเขียวเหมือนรูปภาพด้านล่างนี้ เท่ากับว่าการสร้าง Instance เสร็จสิ้น
จากนั้นให้คลิกView Instances
userdata_password-6

หลังจากสร้าง Instance เสร็จแล้ว ให้สังเกตคำว่า Status Checks จะเห็นว่ามีสถานะเป็น🕘 Initializingคือ Instance กำลังทำการสตาร์ทระบบขึ้นมานั่นเอง
userdata_password-7

เมื่อ Instance เริ่มต้นระบบเสร็จเรียบร้อยแล้ว จะมีสถานะเป็น✅ 2/2 checks passed
userdata_password-8

ทดสอบการ Login Server Amazon Linux 2

ขั้นตอนนี้จะลองทดสอบ Login เข้าใช้งาน Server Amazon Linux 2

สำหรับผู้ใช้งานที่ยังไม่เคยใช้โปรแกรม PuTTy สามารถ Download PuTTy ได้ที่นี่เลย หรือ ถ้าผู้ใช้งานมี PuTTy อยู่แล้ว ให้ข้ามขั้นตอนการดาวน์โหลดโปรแกรมไปได้เลย

การดาวน์โหลดและติดตั้งโปรแกรมควรเลือกให้ตรงกับระบบ Windows ของเรา เช่น ถ้าระบบ Windows ของเราเป็น 64-bit ก็ให้เลือกดาวน์โหลดเป็น64-bit x86เป็นต้น ซึ่งในปัจจุบันนี้ 32-bit ก็ไม่ค่อยมีแล้ว หรือ อาจจะพบได้ในคอมพิวเตอร์รุ่นเก่าที่มีขนาด RAM ต่ำกว่า 4 GB นั่นเอง ทั้งนี้ทั้งนั้นเพื่อความชัวร์ !แนะนำให้ตรวจสอบระบบ Windows ของเราก่อนดาวน์โหลดและติดตั้งโปรแกรมจะดีที่สุดครับ

เมื่อเรามี PuTTy แล้วให้เปิดโปรแกรม PuTTy เตรียมไว้
แล้วไปที่หน้า EC2 Instance ของเราเพื่อคัดลอก Public IPv4 address มาใส่ใน Host Name ของ PuTTy
login_server_ami-1

กลับมาที่หน้าโปรแกรม PuTTy แล้ววาง Public IPv4 address ของคุณลงใน Host Name (or IP address) และกดปุ่มOpenได้เลย
login_server_ami-2

เลือกAccept
login_server_ami-3

เมื่อเข้ามาหน้านี้แล้วให้ใส่ User และ Password ดังนี้

วิธีการใส่ก็คือให้ใส่ User ตามด้านล่างนี้ ตามด้วย Password ของเรา (ระหว่างที่พิมพ์ Password จะไม่แสดงตัวอักษรให้เห็น ให้พิมพ์ลงไปได้เลย !พิมพ์เท่านั้น เพราะไม่สามารถคัดลอกและวางได้)

login as: ec2-user
ec2-user@18.140.196.171's password: your_password

login_server_ami-4

เมื่อ login ได้แล้ว ทีนี้จะมาลองเข้าใช้งาน Server Amazon Linux 2 โดยการใช้สิทธิ์ root ดังนี้
เรียกใช้คำสั่งนี้เพื่อเปลี่ยน ec2-user ให้เป็นสิทธิ์ root

sudo su -

login_server_ami-5

จะเห็นว่าสามารถใช้งานสิทธิ์ root ได้แล้ว ทีนี้เรามาตรวจสอบไฟล์ config ของ ssh กันครับ
ให้รันคำสั่งด้านล่างนี้เพื่อตรวจสอบการตั้งค่าของไฟล์ ssh (ถ้าต้องการให้หน้า terminal ว่างเหมือนในรูป สามารถรันคำสั่งclearก่อนคำสั่งด้านล่างนี้ได้เลย)

less /etc/ssh/sshd_config

login_server_ami-6

เมื่อเข้ามาหน้านี้แล้ว พิมพ์คำว่า/Passwordลงไปได้เลย ตามด้วยกดปุ่ม Enter (ระหว่างพิมพ์ตัวอักษรจะปรากฎด้านล่างของ terminal ตามรูปภาพ) login_server_ami-7

เมื่อ Enter แล้วให้ดูที่PasswordAuthenticationจะเห็นว่ามีสถานะเป็นyesก็หมายความว่าสามารถเข้าใช้งาน Server โดยสิทธิ์ root ได้นั่นเอง

PasswordAuthentication yes

ถ้าต้องการออกจากหน้านี้ให้กดปุ่มqเพียงเท่านี้ก็สามารถใช้งานจัดการระบบต่างๆใน Server โดยสิทธิ์ root ได้แล้ว
login_server_ami-8

ข้อควรระวัง

โปรดใช้ความระมัดระวังกับ EC2 Instance ที่มีการตั้งค่านี้ เนื่องจากมีความเสี่ยงที่จะถูกโจมตีจาก Brute-force attack ซึ่งผู้ก่อการร้ายจะโจมตีด้วยวิธีการส่งรหัสผ่านหรือข้อความรหัสผ่านจำนวนมาก โดยหวังว่าจะคาดเดาได้อย่างถูกต้อง ดังนั้นต้องใช้วิธีการจำกัด IP Address ในการเข้าถึง Server เพื่อความปลอดภัยของคุณเอง

อ่านเพิ่มเติมได้ที่: Brute-force attack

สรุป

การสร้างรหัสผ่านเข้าสู่ระบบระหว่างทำการสร้าง EC2 Instance โดยใช้ UserData เป็นอีกวิธีหนึ่งที่สามารถ login เข้าใช้งาน Server Amazon Linux 2 ได้โดยไม่ต้องเข้าไปตั้งค่า หรือ Browse Key pair เข้ามาใน PuTTy เพื่อ login ให้ยุ่งยาก

เราสามารถกำหนดรหัสผ่านใน UserData ระหว่างทำการสร้าง EC2 Instance ได้อย่างง่ายดาย นอกจากนี้เรายังสามารถเข้าใช้งาน Server Amazon Linux 2 ในฐานะผู้ใช้ที่มีสิทธิ์ root ด้วย Password ของเราได้อีกด้วย

บทความที่เกี่ยวข้อง

อ้างอิง: 【小ネタ】Cloud-initでec2-userのパスワード認証を可能にする

ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่