Login เข้า server ผ่าน SSH แบบเนียนๆ
April 1st, 2009 Posted in My Project, Programmingเคยบ้างไหมครับ กับที่ต้องมานั่งคอยใส่รหัสผ่านวันละหลายๆ ครั้ง เวลาที่ต้องการจะเข้าไปทำงานบนเครื่อง Server ผ่านทาง SSH .. ผมละเป็นคนนึงครับที่มักจะมีปัญหาในเรื่องตรงนี้ เพราะว่าบางครั้งต้องล๊อคอินเข้าไปหลายๆ Server ในแต่ละวัน ทำให้พิมพ์รหัสผ่านกันมือหงิกเลยครับ
หลังจากที่ได้ลองค้นหาข้อมูล ก็ไปเจอวิธีการอันหนึ่งครับ ที่ใช้วิธีการล๊อกอินเข้าไปโดยการใช้ RSA key pair โดยหลักการของมันก็คือ ให้เราเอา public key ของเราไปใส่ไว้บน server แล้วในตอนที่มันทำการ authenticate นี้ มันก็จะใช้ public key บน server กับ private key ที่เก็บอยู่ในเครื่องของเรา เอามายืนยันกันว่าเป็นตัวเราจริงๆ แทนที่จะต้องใช้รหัสผ่านครับ
สำหรับวิธีการทำนั้นก็ง่ายแสนง่าย แต่ต้องเตือนไว้ก่อนนะครับว่าเทคนิคนี้ควรจะทำบนเครื่องคอมพิวเตอร์ของตัวเอง ที่มีการรักษารหัสผ่านเอาไว้ในระดับนึง ไม่เช่นนั้นถ้าโดนแฮกคอมพิวเตอร์ของเราทีนึงนี่ เท่ากับว่าแฮกเกอร์สามารถเข้าถึง server เครื่องอื่นๆ ของเราได้เลยนะครับ
ก่อนอื่น ต้องทำการสร้าง RSA key pair ก่อนครับ โดยใช้คำสั่ง ssh-keygen
Sikachus-Notebook:~ sikachu$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/sikachu/.ssh/id_rsa): [Enter] Enter passphrase (empty for no passphrase): [ใส่รหัสผ่าน หรือกด Enter ผ่านไป] Enter same passphrase again: [ใส่รหัสผ่านอีกครั้ง หรือกด Enter ผ่านไป] Your identification has been saved in /Users/sikachu/.ssh/id_rsa. Your public key has been saved in /Users/sikachu/.ssh/id_rsa.pub. The key fingerprint is: 3f:92:85:eb:d8:5c:f4:52:8e:88:16:db:7d:ac:49:2c sikachu@Sikachus-Notebook.local The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | . | | . S o . | | = X * | | + E X = | | . = = * | | . + o | +-----------------+ Sikachus-Notebook:~ sikachu$
แล้วต่อจากนั้น เราก็จะได้ public key ของเราอยู่ที่ ~/.ssh/id_rsa.pub และ private key ที่ ~/.ssh/id_rsa ซึ่งตัว private key นี้จำเป็นอย่างยิ่งที่เราจะต้องเก็บซ่อนให้มิดชิดครับ
ต่อจากนั้น ขั้นตอนต่อไป เราก็ทำการ scp public key ของเราไปยัง server ซะ .. แต่ว่าเอาไปไว้ใน home directory ของเราก่อนนะครับ เดี๋ยวค่อยย้ายไปที่ของมัน
Sikachus-Notebook:~ sikachu$ scp ~/.ssh/id_rsa.pub hamburger.sikachu.com:~ sikachu@ hamburger.sikachu.com's password: [พิมพ์รหัสผ่านของคุณลงไป] id_rsa.pub 100% 413 0.4KB/s 00:00 Sikachus-Notebook:~ sikachu$
ต่อจากนั้นก็ทำการ ssh เข้าไปยัง server ของคุณ ทำการสร้าง folder .ssh ใน home directory และย้ายไฟล์ public key ของคุณเข้าไป พร้อมทั้งเปลี่ยนชื่อมันให้เป็น authorized_keys
sikachu@hamburger:~$ mkdir -m 700 ~/.ssh sikachu@hamburger:~$ mv id_rsa.pub ~/.ssh/authorized_keys sikachu@hamburger:~$ chmod 0600 ~/.ssh/authorized_keys sikachu@hamburger:~$
ที่บรรทัดสุดท้าย ผมแก้ permission ของ authorized_keys ให้เป็น 600 ด้วย เพื่อความปลอดภัย ไม่ให้ใครสามารถมาเพิ่ม key ลงไปได้
เรียบร้อยแล้วละครับ ต่อจากนี้ถ้าเราทำการ login ผ่านทาง ssh หรือคัดลอกไฟล์ผ่านทาง scp เราก็ไม่จำเป็นต้องใส่รหัสผ่านแล้ว และเรายังสามารถที่จะทำการตั้งค่าบน server ได้ด้วยครับว่าเราต้องการจะให้ login โดยใช้ RSA key pair อย่างเดียว และไม่รับรหัสผ่าน เพื่อเพิ่มความปลอดภัยให้กับ server อีกชั้นหนึ่ง (ก็คือต้อง login โดยใช้เครื่องของเราเท่านั้นละครับ)
ไว้คราวหน้าเดี๋ยวจะมาใหม่กับ tips ดีๆ ครับ



Sorry, comments for this entry are closed at this time.