Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้ Password Store จัดการรหัสผ่านใน Linux

Password Store (หรือ pass) เป็นโปรแกรม UNIX เรียบง่าย ใช้ GPG (GNU Privacy Guard) และ Git จัดการรหัสผ่านบน Linux เรียบง่าย เบา และรวดเร็ว แต่ความเรียบง่ายนี้ทำให้การเข้าถึงฐานข้อมูลเพื่อดึงรหัสผ่านค่อนข้างลำบาก หากใช้ Emacs จะสามารถทำให้กระบวนการนี้ราบรื่นอัตโนมัติได้

password-store ยังเป็นแพ็กเกจ Emacs ที่ทำหน้าที่ Front-end สำหรับโปรแกรม Password Store คล้าย Backend มันเรียบง่าย เบา และขยายฟีเจอร์ได้จากปลั๊กอินชุมชน

Password Store ทำงานอย่างไร

Password Store เป็น Password Manager แบบสุดเรียบง่าย สร้างและแก้ไขรหัสผ่านใน Plain Text เท่านั้น เก็บไฟล์ข้อความไว้สำหรับแต่ละบัญชีและรหัสผ่าน

แม้ดูไม่ปลอดภัยและเก่าแก่ แต่ Password Store เข้ารหัสไฟล์ทั้งหมดด้วย GPG ทำให้ได้ความยืดหยุ่นของ Plain Text พร้อมความปลอดภัยและการเข้ารหัสของ GPG

เนื่องจากจัดการแค่ไฟล์ธรรมดา จึงจัดหมวดหมู่และเรียงลำดับไฟล์ภายใต้โฟลเดอร์ต่างๆ ได้

ยังอนุญาตให้เพิ่มข้อมูลเพิ่มเติมในไฟล์รหัสผ่านได้ เพราะบรรทัดแรกสำหรับรหัสผ่าน ส่วนบรรทัดถัดไปใส่อะไรก็ได้ เช่น:

thisismysupersecretpassword
===============INFORMATION==============
Username: MySuperCoolName
Security Question 1: Yogi
Security Question 2: 1992 Toyota Corolla
Security Question 3: Smith
OTP Key: aabbccddff11223344
========================================

Password Store ไม่อ่านข้อมูลหลังบรรทัดแรก ทำให้เพิ่มข้อมูลเพิ่มเติมได้อิสระ สร้างไดเรกทอรีและรูปแบบรหัสผ่านกำหนดเองได้

ติดตั้ง Password Store

ติดตั้งง่าย มีใน Repository ของ Distro เกือบทุกตัว

  • Debian/Ubuntu: sudo apt install pass gnupg
  • Fedora: sudo dnf install pass gnupg2
  • Arch Linux: sudo pacman -S pass gnupg

สร้าง Password Store

ต้องทำ 2 สิ่ง:

  1. มี GPG Key (สร้างใหม่หรือใช้เดิม) จะเป็น Key ที่ผูกกับ Password Store
  2. Initialize Password Store: แบบง่ายแค่ GPG หรือแบบควบคุมด้วย Git ทั้งคู่ ใช้คำสั่งเดียว

สร้าง GPG Key สำหรับ Store

  1. รัน: gpg --full-generate-key
  2. Wizard จะถามอัลกอริทึมเข้ารหัส เริ่มต้น RSA กด Enter เลือกได้
  3. ถามความยาว Key (Key Length) ยิ่งยาวยิ่งปลอดภัย ตัวอย่างใช้ 4096
  4. ถามว่า Key หมดอายุหรือไม่ แนะนำให้ตั้งหมดอายุ (เช่น 6m = 6 เดือน) เพื่อเพิกถอนอัตโนมัติหาก Key ถูกโจมตีหรือลืมรหัสผ่าน
  5. ใส่ Name และ Email (ใช้แสดงตอน Encrypt/Decrypt)
  6. ตั้งรหัสผ่านเข้าถึง Key ต้องแข็งแรงและจดจำง่าย เพราะจะใช้ทุกครั้งที่เข้าถึง Password Store

เริ่มต้น Store

2 วิธี:

  • Simple Store: cd /home/$USER/ && pass init "your-gpg-email" → สร้าง .password-store ใน Home
  • Git-controlled Store: pass git init → เริ่ม Git repo สำหรับ Store ใช้คำสั่ง Git ผ่าน pass git ... ดู Remotes: pass git remote get-url --all

ผสานรวม Emacs กับ Password Store

  1. เพิ่ม MELPA Repository ใน init.el: (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize)
  2. Reload Emacs
  3. Alt+X → package-install → พิมพ์ password-store
  4. Emacs จะดาวน์โหลด คอมไพล์ ติดตั้ง ใช้คำสั่งได้ที่ Alt+X → password-store-version

เพิ่มรหัสผ่านใหม่

  1. Alt+X → password-store-insert
  2. Prompt ถามชื่อรหัสผ่าน
  3. ใส่รหัสผ่าน (จะซ่อนตัวอักษร)

แก้ไขรายการใน Store

  1. Alt+X → password-store-edit
  2. Prompt ถามชื่อรหัสผ่านที่จะแก้ (เช่น forum-account)
  3. ใส่รหัสผ่าน GPG Key → Emacs เปิด Buffer แสดงเนื้อหาไฟล์ ให้แก้ไข (เพิ่ม Security Questions เป็นต้น)
  4. บันทึก: Ctrl+X, Ctrl+S → ปิด Buffer: Ctrl+X, K → Password Store จะ Commit การเปลี่ยนแปลง

ลบรหัสผ่าน

Alt+X → password-store-remove → Prompt ถามชื่อ → ใส่ชื่อ → Enter

คัดลอกรหัสผ่านจาก Store

  1. Alt+X → password-store-copy
  2. Prompt ถามชื่อรหัสผ่าน → จะคัดลอกไป Clipboard

คำถามที่พบบ่อย (FAQ)

1. Password Store สร้างรหัสผ่านสุ่มได้ไหม (เหมือน KeePassXC)?

ได้! Alt+X → password-store-generate จะ Prompt ถามชื่อบัญชีใหม่ แล้วสร้างรหัสผ่านสุ่มให้ คัดลอกได้ด้วย password-store-copy

2. รองรับ OTP (One-Time Password) ได้ไหม?

ได้! มีปลั๊กอิน pass-extension-otp (Debian/Ubuntu: sudo apt install pass-extension-otp, Fedora: sudo dnf install pass-otp, Arch: sudo pacman -S pass-otp)
ใช้: pass otp insert "account-name" แล้ว pass otp "account-name" จะได้รหัส OTP

3. แสดงรหัสผ่านเป็น Tree ใน Emacs ได้ไหม?

โดยตรงไม่ได้ แต่ถ้าใช้ Minibuffer Completion package เช่น helm หรือ mct (มีใน GNU ELPA) จะแสดงผ่าน Tab-completion ได้