วิธีการ SSH โดยไม่ต้องใส่รหัสผ่าน

Tags: 

โดยหลักการแล้ว การ SSH (Secure Shell) โดยไม่ต้องใส่รหัสผ่านจะต้องใช้ private key และ public key ในการจับคู่ระหว่างเครื่องแม่ข่ายและเครื่องลูกข่าย โดยไฟล์ public key จะใส่ไว้ที่เครื่องแม่ข่าย และไฟล์ private key จะใส่ไว้ที่เครื่องลูกข่าย ซึ่งมีวิธีการทำดังนี้

รันคำสั่งข้างล่างนี้บนเครื่องลูกข่าย

ssh-keygen -t dsa

แล้วจะมีข้อมูลให้เรากรอกดังนี้

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Generating public/private dsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_dsa): 
 
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
 
Your identification has been saved in /home/username/.ssh/id_dsa.
Your public key has been saved in /home/username/.ssh/id_dsa.pub.
The key fingerprint is:
5c:f6:a2:aa:ac:91:a5:35:1e:2a:3f:04:a0:76:f4:c3 username@ubuntu:~$
The key's randomart image is:
+--[ DSA 1024]----+
|                 |
|.  .             |
|o . o     o      |
|o. . E . o .     |
|... = . S . .    |
|  .B o   . .     |
|..= .   .        |
| o.o   .         |
|  ooo..          |
+-----------------+

บรรทัดที่ 2 จะเป็นการใส่ที่อยู่ของ key ไฟล์ทั้ง public และ private key ซึ่งถ้ากด enter โดยไม่กรอกอะไรจะเป็นการบันทึกไฟล์ key ไว้ที่ /home/username/.ssh/id_dsa
บรรทัดที่ 5-6 จะเป็นการใส่รหัสผ่านเพื่อเพิ่มความปลอดภัยให้กับ key ของเราในกรณีที่อาจจะถูกขโมยไฟล์ key ของเราไปได้

หลังจากนั้นเครื่องจะทำการสร้างไฟล์ id_dsa ซึ่งเป็น private key และไฟล์ id_dsa.pub ซึ่งเป็น public key ขึ้นมาให้เราโดยอัตโนมัติตาม path ที่เราใส่ไว้ข้างต้น

ทำการคัดลอกไฟล์ id_dsa.pub ไปไว้ที่เครื่องแม่ข่ายที่ /home/serverusername/.ssh/ และรันคำสั่ง

cd /home/serverusername/.ssh/
mv id_dsa.pub authorized_keys
chmod 600 authorized_keys

ส่วนไฟล์ id_dsa ให้นำไปไว้ที่เครื่องลูกข่ายที่ต้องการจะ SSH เข้าไปยังเครื่องแม่ข่าย รวมถึงต้อง chmod permission ของไฟล์ให้เป็น 600 ด้วย โดยอาจจะเปลี่ยนชื่อไฟล์เป็นชื่ออะไรก็ได้

ทำการทดสอบ SSH จากเครื่องลูกข่ายไปยังเครื่องแม่ข่ายด้วยคำสั่ง

ssh -l serverusername -i /home/username/.ssh/id_dsa hosturl

-l serverusername คือ Username บนเซิร์ฟเวอร์ที่ต้องการจะ SSH เข้าไป
-i /home/username/.ssh/id_dsa คือ path ของ private key ที่จะใช้ติดต่อกับเซิร์ฟเวอร์
hosturl คือ ไอพีหรือ URL ของเซิร์ฟเวอร์

อัพเดต: (21/12/09) จริงๆ แล้วคำสั่ง ssh-kengen จะใส่ -t dsa หรือไม่ใส่ก็ได้ แต่ถ้าไม่ใส่ จะเป็นการเข้ารหัสแบบ rsa แทน

Add new comment