ssh แบบไม่ต้องถามรหัสผ่าน

ssh คือโปรแกรมที่จะนำเราเข้าไปใช้เชลล์ของเครื่องแม่ มีความปลอดภัยสูงกว่า telnet

ลูกข่ายที่เป็นลินุกซ์

เอามาจาก 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:~$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@server1

หน้าจอตัวอย่าง

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' (RSA) to the list of known hosts.
root@server1's password: <<<--- ใส่รหัสผ่านของ root ที่ server1
Now try logging into the machine, with "ssh 'root@server1'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

ทดลอง ssh เข้าไปที่ server1 ในชื่อ root

user1@client1:~$ ssh server1 -l root

เรียบร้อย ต่อไปก็ไม่ต้องถามรหัสผ่านแล้ว

----------

ลูกข่ายที่เป็นวินโดวส์

เอามาจาก ThaiLinuxCafe - debian : ssh โดยใช้ putty บนวินโดวส์

อ้างอิง PuTTY User Manual : Chapter 8: Using public keys for SSH authentication

ต้องการทดลองใช้ ssh บนวินโดวส์แบบไม่ต้องถามรหัสผ่าน สำหรับท่านที่ยังต้องทำงานบนฝั่งวินโดวส์อยู่

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"
  • ไปที่ช่อง Parameters
    เลือก SSH2-DSA
    Number of bits in a generated key : 2048
    

    แล้วกดปุ่ม Generate (ขั้นตอนนี้ อย่าลืมเอาเมาส์เคลื่อนไปมาตรงที่ว่าง ๆ เพื่อใช้ในการผลิตรหัสสุ่ม)

  • กดปุ่ม Save private key ตั้งชื่อว่า id_dsa (เขาจะเปลี่ยนชื่อเป็น id_dsa.ppk โดยอัตโนมัติ)
    Are you sure you want to save this key without a passphrase to protect it?
    <<<--- Yes
    
  • งานต่อไปคือการคัดลอกกุญแจไปแปะที่เซิร์ฟเวอร์ ทำโดยเอาเมาส์ไปป้ายในช่อง "Public key for pasting into OpenSSH authorized_keys file:" กด Ctrl+C เพื่อคัดลอก (จะนำไปแปะที่หน้าต่าง putty อันแรกที่เปิดไว้)

กลับมาที่ 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"

ก็สามารถใช้งานได้ทันที

หมายเหตุ

  • ไม่เหมาะสำหรับเครื่องวินโดวส์ที่มีผู้ใช้หลายคน เพราะคนอื่นสามารถลักลอบใช้งาน ssh ได้ในสิทธิ์ root เลย
  • งานนี้ควรแสดงเป็นแบบกราฟฟิก แต่ผมขี้เกียจ และต้องการประหยัดแบนด์วิดท์ (บทความจากคนยาก ;D ) เลยใช้โหมดอักขระแทน พยายามอ่านหน่อยแล้วกันนะครับ :)
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้