เอามาจาก ThaiLinuxCafe : ทดลอง ssh อย่างง่าย
จะทำ ssh-key ใช้สำหรับเวลาล๊อกอินเข้าเซิร์ฟเวอร์ผ่าน ssh
เพื่อให้ไม่ต้องใส่รหัสผ่านทุกครั้ง
สมมุติฐานคือ
เราต้องการล๊อกอินเป็น root ของเครื่องเซิร์ฟเวอร์ server1 มีไอพีเป็น 192.168.1.1
เราชื่อ user1 อยู่ที่เครื่อง client1
ทำที่เครื่อง server1
ติดตั้ง ssh
server1:~# aptitude install ssh
ทำที่เครื่อง client1
ติดตั้ง ssh เหมือนกัน
user1@client1:~$ sudo aptitude install ssh
สร้างกุญแจให้กับ ssh 1 ดอก
user1@client1:~$ ssh-keygen -t dsa
( รอ 1 เพลิน )
หน้าจอภาพตัวอย่างของผม
Enter file in which to save the key (/home/user1/.ssh/id_dsa): <<<--- {Enter} Enter passphrase (empty for no passphrase): <<<--- {Enter} Enter same passphrase again: <<<--- {Enter} Your identification has been saved in /home/user1/.ssh/id_dsa. Your public key has been saved in /home/user1/.ssh/id_dsa.pub. The key fingerprint is: 15:16:63:52:d4:03:62:66:0a:a9:8a:29:59:af:60:69 user1@server1
คัดลอกกุญแจที่สร้างขึ้น ไปยังเซิร์ฟเวอร์ ผ่านโปรแกรม scp
โดยสมมุติว่าเราต้องการล๊อกอินเป็น root ที่เครื่อง server1
user1@client1:~$ scp ~/.ssh/id_dsa.pub root@server1:/root/.ssh
หน้าจอตัวอย่าง
The authenticity of host 'server1 (192.168.1.1)' can't be established. RSA key fingerprint is 0f:7a:e1:1b:c9:de:52:d4:b9:4d:c6:f4:11:72:11:b4. Are you sure you want to continue connecting (yes/no)? <<<--- yes Warning: Permanently added 'server1,192.168.1.1' (RSA) to the list of known hosts. Password: <<<--- ใส่รหัสผ่านของ root ที่ server1 id_dsa.pub 100% 600 0.6KB/s 00:00
ต่อไปต้องกลับไปทำที่เครื่อง server1
ซึ่งอาจใช้การ ssh ไปยัง server1 หรือไปทำหน้าจอ server1 โดยตรงเลยก็ได้
ในที่นี้สมมุติว่าทำผ่าน ssh แบบที่ต้องใส่รหัสผ่านปกติ
user1@client1:~$ ssh server1 -l root
Password: <<<--- ใส่รหัสผ่านของ root ที่ server1
ย้ายไปที่เครื่อง server1
ไปที่ไดเรคทอรี่ที่เก็บค่าของ ssh
server1:~# cd .ssh
นำกุญแจที่เราคัดลอกมา แปะไว้ที่ไฟล์ authorized_keys
server1:~# touch authorized_keys
server1:~# chmod 600 authorized_keys
server1:~# cat id_dsa.pub >> authorized_keys
ออกจาก server1
server1:~# exit
ย้ายกลับมาที่เครื่อง client1
ทดลองใช้ ssh เข้าไปที่ server1 ในชื่อ root
user1@client1:~$ ssh server1 -l root
เรียบร้อย ต่อไปก็ไม่ต้องถามรหัสผ่านแล้ว
update
ขั้นตอนการคัดลอกไฟล์ไปยังเซิร์ฟเวอร์ ใช้คำสั่งง่าย ๆ ลดขั้นตอนไปเยอะเลย
user1@client1:~$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@server1
เอามาจาก http://www.debianclub.com/node/49
update for stretch
เปล่ยนจาก dsa เป็น rsa
user1@client1:~$ ssh-keygen -t rsa
user1@client1:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@server1
เอามาจาก ThaiLinuxCafe - debian : ssh โดยใช้ putty บนวินโดวส์
ต้องการทดลองใช้ ssh บนวินโดวส์ แบบไม่ต้องถามรหัสผ่าน
อ้างอิง PuTTY User Manual : Chapter 8: Using public keys for SSH authentication
สำหรับท่านที่ยังต้องทำงานบนฝั่งวินโดวส์อยู่
ssh client บนวินโดวส์นั้น ตัวที่นิยมคือ putty
ดาวน์โหลดได้จาก PuTTY Download Page
ตัวที่เราจะใช้คือ putty.exe และ puttygen.exe
(หากต้องการใช้การคัดลอกไฟล์ผ่านเครือข่าย อาจดาวน์โหลด pscp.exe มาด้วยก็ได้ แต่ในที่นี้จะไม่ใช้วิธีเหมือนกับคราวที่แล้ว ทั้งนี้เพื่อหลีกเลี่ยงการบันทึกไฟล์ ซึ่งอาจเกิดปัญหาอักขระของระบบวินโดวส์และยูนิกส์จัดเก็บไม่เหมือนกัน แต่จะใช้วิธี Copy&Paste โดยใช้เมาส์ปุ่มขวา ผ่าน putty แทน)
เมื่อได้ไฟล์มาแล้วก็มาเก็บไว้ใน search path ( ผมเก็บไว้ใน c:\windows )
สมมุติว่าเซิร์ฟเวอร์ที่เราต้องการ ssh ไปหา ชื่อ server1 มีไอพี 192.168.1.1
และเราต้องการสร้างบัญชี ssh ในชื่อ root
เริ่มด้วย
เปิด putty รอไว้ 1 หน้าต่าง
เริ่มรัน putty ตัวแรก เพื่อจะนำกุญแจที่จะผลิตในขั้นตอนต่อไปมาแปะใส่
กด Start -> Run -> "putty 192.168.1.1 -l root"
ปล่อยรอไว้
ผลิตกุญแจ
โดยรัน puttygen
กด Start -> Run -> "puttygen"
เลือก SSH2-DSA Number of bits in a generated key : 2048
แล้วกดปุ่ม Generate
( ขั้นตอนนี้ อย่าลืมเอาเมาส์เคลื่อนไปมาตรงที่ว่าง ๆ เพื่อใช้ในการผลิตรหัสสุ่ม )
Are you sure you want to save this key without a passphrase to protect it? <<<--- Yes
กลับมาที่ putty หน้าต่างแรก
ขั้นตอนนี้อ่านละเอียดนะครับ
# cd ~/.ssh
# echo "(***คลิกขวาเมาส์ในระหว่างเครื่องหมายคำพูด***)" >> authorized_keys
เราพิมพ์ echo "
แล้วก็คลิกขวาเมาส์เพื่อแปะข้อมูลกุญแจที่เกิดจากขั้นตอนก่อน แล้วจึงพิมพ์ต่อว่า " >> authorized_keys
รัน putty อีกหน้าต่างนึง
เพื่อจะบันทึกค่าเก็บไว้ใช้ในครั้งต่อ ๆ ไป
เริ่มรัน putty แบบไม่ใส่พารามิเตอร์
กด Start -> Run -> "putty"
ใส่ชื่อ Host Name
Category -> Session
Host Name: 192.168.1.1 Port: 22
ใส่ชื่อผู้ใช้
Category -> Connection -> Data
Auto-login username: root
นำกุญแจที่ผลิตได้ มาใช้งาน
Category -> Connection -> SSH -> Auth
Private key file for authentication: <<<--- กด Browse เพื่อเลือกไฟล์ id_dsa.ppk ที่บันทึกไว้มาใช้
ถึงขั้นตอนนี้อย่าเพิ่งกด Open บรรทัดล่างสุด แต่ให้บันทึก session ก่อน
บันทึก session เพื่อจะนำมาใช้ในภายหลัง
Category -> Session
ตั้งชื่อว่า session1
Saved Sessions: <<<--- session1 -> กดปุ่ม Save
ลองใช้งาน
กด Open บรรทัดล่างสุดได้แล้ว
ถ้าไม่มีอะไรผิดพลาด โปรแกรมจะล๊อกอินเข้าเลย โดยไม่ถามรหัสผ่าน
ก็สามารถปิดหน้าต่างที่เปิดค้างไว้ได้ทุกบาน
ในการใช้งานครั้งต่อไป เราจะใช้คำสั่งว่า
Start -> Run -> "putty -load session1"
ก็สามารถใช้งานได้ทันที
หมายเหตุ