มันคือการทำ ให้เวลาเราเข้าที่ host นึงแล้วพอเรา ssh ไปอีกทีสามารถเข้าได้เลยโดยไม่ต้องใส่ password วิธีการคือเราต้องไปสร้าง key ก่อน แล้วเอามาใส่ อธิบายก็ งงแน่ๆ เพราะผมก็งง
มายกตัวอย่างให้เห็นกันดีกว่า
Client จะ เป็นเครื่องที่เราใช้เป็น Client พอ Login เข้าเครื่องนี้แล้วอยากไป เครื่อง Server สามารถเข้า Server ได้เลยโดยไม่ต้องใส่ Password
Server เครื่อง Server ที่เราอยากเข้ามาโดยไม่ต้องใส่ Password
ขั้นตอน การทำ key นั้นไม่ยุ่งยากครับ เริ่มก็ ต้องเข้าใจนะครับว่าตัวไหน Client ตัวไหน Server จะได้ไม่ งง
ผมจะใช้ตัวย่อ C = Client และ S = Server นะครับ (C$ = command line บนเครื่อง Client , S$ = command line บนเครื่อง Server)
Code:
C$ ssh-keygen -t dsa
การส ร้าง key มีทั้ง dsa , rsa เปลี่ยนเอาตามที่ชอบ ความแตกต่าง ลองหาอ่านดูใน net ครับผมก็หาผ่านๆ ไม่แน่ใจว่าอันไหนดีกว่า แต่เห็นว่าเวลาเรา ssh default มันจะสร้าง key นี้ เลยใช้อันนี้นะครับ
Quote
Generating public/private dsa key pair.
Enter file in which to save the key (/home/bobby/.ssh/id_dsa): Enter ผ่านไปเลย
Enter passphrase (empty for no passphrase): Enter ผ่านไปเลย
Enter same passphrase again: Enter ผ่านไปเลย
Your identification has been saved in /home/bobby/.ssh/id_dsa.
Your public key has been saved in /home/bobby/.ssh/id_dsa.pub.
The key fingerprint is:
de:59:05:fe:aa:6e:15:73:2a:c7:53:0c:c1:ae:e7:92 bobby@Client
The key's randomart image is:
+--[ DSA 1024]----+
| .o. |
| .o. |
| ..o. |
| +o+ |
| S o.*. |
| . .ooB. |
| . oB.. |
| E.. |
| oo. |
+-----------------+
Enter รั่วไป 3 อันก็จะจบการสร้าง key โดยเราจะได้ไฟล์ /home/bobby/.ssh/id_dsa.pub ซึ่งเป็น key ของเครื่อง Client
Code:
C$ cd /home/bobby/.ssh
C$ ls -la
เข้าไปอยู่ใน path ที่เก็บ key เพราะเราจะต้อง copy key ไปยัง Server
Quote
-rw------- 1 bobby bobby 672 May 3 02:14 id_dsa
-rw-r--r-- 1 bobby bobby 612 May 3 02:14 id_dsa.pub
-rw-r--r-- 1 bobby bobby 394 May 3 02:07 known_hosts
รายการใน folder .ssh
Code:
C$ sftp bobby@Server
เตรียมส่ง key ไปยัง Server ผ่าน sftp (หรือจะใช้ ftp ธรรมดาก็ได้แล้วแต่ความถนัด)
Quote
Connecting to Server...
The authenticity of host 'Server (Server)' can't be established.
DSA key fingerprint is 5c:7e:65:eb:cc:6c:1e:24:49:16:b0:6f:d7:82:f7:72.
Are you sure you want to continue connecting (yes/no)? yes หากเข้ามาครั้งแรกก็ให้ตอบ yes
Warning: Permanently added 'Server' (DSA) to the list of known hosts.
Password: ใส่ password
Code:
sftp> put id_dsa.pub
ส่ง key จากเครื่อง Client ไปยัง Server
Quote
Uploading id_dsa.pub to /usr/home/bobby/id_dsa.pub
id_dsa.pub 100% 612 0.6KB/s 00:00
Code:
sftp> exit
ขั้นต่อไปเราก็ไปทำบน เครื่อง Server
Code:
S$ ssh bobby@Client
ถาม password ก็ใส่ไปเรียบร้อย ก็ exit ออกมา เป็นการทำเพื่อให้ระบบสร้าง path,file ต่างๆ เกี่ยวกับ ssh
ถ้าเคย ssh ออกจาก Server ไปที่อื่นๆ ไม่จำเป็นต้องทำหัวข้อนี้นะครับ
Code:
S$ mv id_dsa.pub .ssh/authorized_keys
S$ chmod 755 .ssh/authorized_keys
id_dsa.pub คือ key ที่เราส่ง sftp มามันก็จะอยู่ใน home เราก็ move ไปให้ .ssh/
เสร็จแล้วครับแค่นี้ เวลาเรา
Code:
C$ ssh bobby@Server
ก็จะไม่ถาม Password แล้วครับ
***การทำแบบนี้เวลาจะใช้งานเราต้องเข้า User บนเครื่อง Client ที่สร้าง key และ ssh ไปยังเครื่อง Server ที่ user ที่เอา key ไปใส่
ตัวอย่างเพื่ออธิบายเพิ่มเติม
เราใช้ bob@Client และอยากเข้า bobby@Server ก็สร้าง key ที่ bob@Client แล้ว ส่งไฟล์ key ไปเก็บไว้ใน path ของ bobby@Server