
ที่มาภาพ: Unknown Source
วิธีตั้งค่าและใช้งาน SSH JIT Access บน Linux เพื่อจำกัดการเข้าถึงแบบชั่วคราวอย่างปลอดภัย
⚡ สรุป 30 วิ
การเข้าถึงเซิร์ฟเวอร์ Linux ผ่าน SSH แบบดั้งเดิมมักเปิดให้ผู้ใช้ล็อกอินได้ตลอดเวลา ซึ่งเพิ่มความเสี่ยงเมื่อคีย์ส่วนตัวหลุดหรือผู้ใช้ลืมปิด session.
Overview — Overview
การเข้าถึงเซิร์ฟเวอร์ Linux ผ่าน SSH แบบดั้งเดิมมักเปิดให้ผู้ใช้ล็อกอินได้ตลอดเวลา ซึ่งเพิ่มความเสี่ยงเมื่อคีย์ส่วนตัวหลุดหรือผู้ใช้ลืมปิด session. SSH JIT (Just‑In‑Time) Access ช่วยให้คุณสร้างรหัสผ่านชั่วคราวที่ใช้งานได้เพียงครั้งเดียวหรือในช่วงเวลาจำกัด ทำให้การเข้าถึงเป็น ปลอดภัย มากขึ้นและลดพื้นที่โจมตี.
- สร้าง token ที่มีอายุสั้น (เช่น 5‑15 นาที)
- จำกัด IP หรือผู้ใช้ที่สามารถใช้งานได้
- ไม่ต้องเปลี่ยนแปลงคีย์ SSH ปกติ
Prerequisites — Prerequisites
ก่อนเริ่มตั้งค่า คุณต้องมีสิทธิ์ระดับ root หรือ sudo บนเครื่อง Linux ที่จะทำการกำหนด JIT และมีอินเทอร์เน็ตเชื่อมต่อเพื่อดาวน์โหลดแพ็กเกจ. ตรวจสอบเวอร์ชัน OpenSSH อย่างน้อย 7.6 เนื่องจากฟีเจอร์ AuthorizedKeysCommand ต้องใช้งาน.
- ระบบปฏิบัติการ: Ubuntu 20.04+, Debian 10+, CentOS 8+ หรืออื่นที่รองรับ systemd
- มีผู้ใช้ sudo ที่จะตั้งค่า JIT สำหรับตนเองหรือทีม
- ติดตั้ง `python3`, `pip` และ `git`
Install Dependencies — Install Dependencies
เราจะใช้สคริปต์ Python เพื่อจัดการ token; การติดตั้งง่ายด้วย pip. ขั้นตอนต่อไปนี้ทำบนเครื่องที่เป็น SSH‑JIT server (มักเป็น bastion host).
- อัพเดตแพ็กเกจ `sudo apt update && sudo apt upgrade -y` หรือใช้ `yum update -y` ตามดิสโทร
- ติดตั้ง Python3 และ pip
``` sudo apt install -y python3 python3-pip git # Ubuntu/Debian sudo yum install -y python3 python3-pip git # CentOS/RHEL ```
- ดาวน์โหลดโปรเจค JIT (ตัวอย่างจาก GitHub)
``` git clone https://github.com/example/ssh-jit.git /opt/ssh-jit cd /opt/ssh-jit pip3 install -r requirements.txt ```
Configure SSH JIT — Configure SSH JIT
ปรับไฟล์ `sshd_config` ให้เรียกสคริปต์ตรวจสอบ token ก่อนยอมให้ผู้ใช้ล็อกอิน.
- เปิดไฟล์ `/etc/ssh/sshd_config` ด้วย editor ที่คุณถนัด
- เพิ่มหรือแก้ไขบรรทัดต่อไปนี้
``` AuthorizedKeysCommand /opt/ssh-jit/jit_auth.py %u %t AuthorizedKeysCommandUser root ```
- Reload SSH daemon เพื่อให้การเปลี่ยนแปลงมีผล
``` sudo systemctl reload sshd ```
**Tip: ตรวจสอบว่า `jit_auth.py` มีสิทธิ์ execute (`chmod +x`) และสามารถเข้าถึงไฟล์ token storage ได้โดยไม่มี error.
Generate One‑Time Token — Generate One‑Time Token
ผู้ใช้ที่ต้องการเชื่อมต่อจะขอ token ผ่าน CLI หรือ API ก่อนทำ SSH. ตัวอย่างคำสั่ง:
``` /opt/ssh-jit/generate_token.py --user alice --ttl 10m ```
ผลลัพธ์จะเป็นค่า base64 ที่ต้องส่งให้กับ `ssh -i` ผ่าน environment variable หรือไฟล์ชั่วคราว.
- ค่าพารามิเตอร์สำคัญ
- `--user`: ชื่อผู้ใช้บนระบบ Linux
- `--ttl`: เวลาที่ token มีอายุ (เช่น 10m = 10 นาที)
เก็บ token ไว้ในไฟล์ `.ssh/jit_token` แล้วตั้งค่า permission ให้เป็น `600`.
Connect Using SSH JIT — Connect Using SSH JIT
เมื่อได้ token แล้ว การเชื่อมต่อทำได้โดยระบุตัวแปร `SSH_JIT_TOKEN`.
``` export SSH_JIT_TOKEN=$(cat ~/.ssh/jit_token) ssh -o "IdentitiesOnly=yes" [email protected] ```
`jit_auth.py` จะอ่านค่า `SSH_JIT_TOKEN`, ตรวจสอบความถูกต้องและอายุ, จากนั้นส่ง public key ที่ตรงกับผู้ใช้กลับให้ SSH daemon ยอมรับการล็อกอิน.
- หาก token หมดอายุ การเชื่อมต่อจะถูกปฏิเสธทันที
- สามารถรวมขั้นตอนนี้ในสคริปต์ CI/CD หรือ Terraform เพื่อให้ developer ได้เข้าถึงแค่ช่วงเวลาที่ต้องการ
Tips & Best Practices — Tips
ทำตามแนวทางเหล่านี้เพื่อเพิ่มความมั่นใจว่าระบบ JIT ทำงานได้อย่างปลอดภัย.
- จำกัด IP: เพิ่มเงื่อนไขใน `jit_auth.py` ตรวจสอบว่า client IP อยู่ใน whitelist
- บันทึก Log: ให้สคริปต์เขียน log ลง `/var/log/ssh-jit.log` พร้อม timestamp, user, และผลการตรวจสอบ
- Rotate Keys: แม้ใช้ JIT อย่าลืม rotate public keys ของผู้ใช้เป็นระยะ (เช่น ทุก 90 วัน)
- Backup Token Store: หากเก็บ token ในไฟล์หรือฐานข้อมูล ให้ทำ backup อย่างสม่ำเสมอ
**Warning: อย่าให้สิทธิ์ `AuthorizedKeysCommandUser` เป็นผู้ใช้งานทั่วไป; ควรเป็น `root` หรือบัญชีที่มีสิทธิ์จำกัดเพื่อป้องกันการละเมิด
Comparison of Token Lifetimes — Token Lifetime Comparison
| อายุ token | การใช้กรณี | ความเสี่ยง |
|---|---|---|
| 5 นาที | แก้ไขด่วน, การทำงานใน CI | ต่ำ – เหมาะกับสคริปต์อัตโนมัติ |
| 15 นาที | การดีบักแบบ interactive | ปานกลาง – ผู้ใช้ยังต้องรีเฟรชบ่อย |
| 1 ชั่วโมง | งานที่ต้องทำหลายขั้นตอนต่อเนื่อง | สูง – หาก token ถูกขโมย มีโอกาสใช้งานได้มากกว่า |
Summary — Summary
การเปิดใช้งาน SSH JIT Access บน Linux ช่วยจำกัดการเข้าถึงแบบชั่วคราวโดยใช้ token ที่มีอายุสั้น ทำให้ระบบปลอดภัยยิ่งขึ้นและลดผลกระทบจากคีย์ที่รั่ว.
- ติดตั้ง Python, git และสคริปต์ JIT
- ปรับ `sshd_config` ให้เรียก `AuthorizedKeysCommand`
- สร้าง token ด้วย TTL ที่เหมาะสมแล้วส่งให้ SSH client ผ่าน environment variable
- ตรวจสอบ IP, บันทึก log และ rotate keys อย่างสม่ำเสมอ
ด้วยขั้นตอนเหล่านี้ คุณสามารถจัดการสิทธิ์เข้าถึงเซิร์ฟเวอร์ได้อย่าง ปลอดภัย, ยืดหยุ่น และ ควบคุมเวลา ตามความต้องการของทีมงาน.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่าและใช้งาน SSH JIT Access บน Linux เพื่อจำกัดการเข้าถึงแบบชั่วคราวอย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 30 กรกฎาคม 2569 เวลา 19:50



