หากคุณจำเป็นต้องสร้างการเชื่อมต่อ SSH กับเซิร์ฟเวอร์บ่อยครั้ง การป้อน password ในแต่ละครั้งอาจเป็นเรื่องยุ่งยากหรือแม้แต่การไม่เริ่มต้น ตัวอย่างเช่น ในกรณีของเรา เราใช้การเชื่อมต่อ ssh ใน build script ทุกคืน ดังนั้นการป้อน password จึงไม่ใช่ตัวเลือก…
ดังนั้นในการกำหนดค่าเซิร์ฟเวอร์และลูกค้าของคุณให้ยอมรับการเชื่อมต่อ ssh ที่ปลอดภัยโดยไม่ต้องป้อน password สิ่งที่ต้องทำคือสร้าง key pair แทน คือการใช้งาน public key และ private key และคัดลอกส่วน publicไปยังตำแหน่งที่เหมาะสมบนเซิร์ฟเวอร์
สำหรับการทำเช่นนี้ บนโฮมไดเร็กทอรีของผู้ใช้, บนเครื่องลูกค้า ให้พิมพ์:
1 |
local> ssh-keygen -t rsa -f ~/.ssh/id_rsa |
-t บอกประเภทของการเข้ารหัส
-f บอกตำแหน่งที่จะจัดเก็บ key pair public/private ในกรณีนี้ กำลังใช้ไดเร็กทอรี .ssh ในโฮมไดเร็กทอรี
password จะถูกถาม ออกจากนี้ว่างส่วนหนึ่งเพียงกด <Enter>
ตอนนี้ไปที่ไดเรกทอรี .ssh และคุณจะพบสองไฟล์ใหม่: id_rsa และid_rsa.pub สุดท้ายคือส่วน public ตอนนี้คัดลอก public key ไปยังเครื่องเซิร์ฟเวอร์:
1 2 |
local> cd ~/.ssh local> scp id_rsa.pub user@remote:~/.ssh/id_rsa.pub |
แน่นอน คราวนี้คุณจะต้องป้อน password ตอนนี้ ลงชื่อเข้าใช้เครื่องเซิร์ฟเวอร์และไปที่ไดเร็กทอรี .ssh ทางฝั่งเซิร์ฟเวอร์:
1 2 |
local> ssh user@remote remote> cd ~/.ssh |
จากนั้นเพิ่ม public key ของลูกค้า ไปยัง public key ที่รู้จักบนเซิร์ฟเวอร์:
1 2 3 4 |
remote> cat id_rsa.pub >> authorized_keys2 remote> chmod 640 authorized_keys2 remote> rm id_rsa.pub remote> exit |
และนั่นคือทั้งหมด ครั้งต่อไปที่คุณลงชื่อเข้าใช้เซิร์ฟเวอร์ระยะไกล จะไม่มีการถามpassword หากไม่ได้ผล คุณสามารถลองใช้ authorized_keys แทน authorized_keys2 ได้ เนื่องจากอาจขึ้นอยู่กับเวอร์ชันของ Linux ที่ใช้โปรดทราบว่าระบบนี้จะทำงานได้ในขณะที่ไม่มีเครื่องใดเปลี่ยนที่อยู่ IP และสำหรับผู้ใช้เฉพาะ ดังนั้นจึงยังปลอดภัย
แปลจากบทความภาษาอังกฤษ : No password SSH – Login to a SSH server with private/public keys
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT