เวลาเชื่อมต่อ ssh ปกติแล้วจะต้องใส่รหัสผ่านทุกครั้ง แต่หากใครรู้สึกว่าไม่สะดวกก็มีวิธีที่ทำให้ไม่ต้องใส่รหัสเหมือนกัน
วิธีการคือต้องทำ ssh key ของเครื่องที่เราใช้อยู่ขึ้นมา แล้วส่งไปให้เครื่องฝั่งเซิร์ฟเวอร์จำไว้
ไฟล์ที่เก็บ ssh key จะต้องถูกสร้างอยู่ใน ~/.ssh ดังนั้นก่อนอื่นให้ลองดูว่ามีไฟล์นั้นอยู่แล้วหรือเปปล่า
ls -al ~/.ssh
ถ้าหากพบว่ามีไฟล์ id_rsa และ id_rsa.pub อยู่แล้วก็ให้ใช้อันนี้ได้เลย
แต่หากไม่มีก็ให้พิมพ์คำสั่ง
ssh-keygen -t rsa
จากนั้นก็จะมีข้อความขึ้นมาให้ป้อนพาธ แต่ก็ไม่จำเป็นต้องสนใจก็ได้ ให้กด enter ไป
เท่านี้ไฟล์ id_rsa และ id_rsa.pub ก็จะถูกสร้างขึ้นมา
จากนั้นให้ไปดูที่โฟลเดอร์ ~/.ssh ในฝั่งเซิร์ฟเวอร์ว่ามี authorized_keys อยู่หรือเปล่า
ถ้าไม่มีไฟล์นั้นอยู่ก็ให้ส่งไฟล์ id_rsa.pub ไปยังเซิร์ฟเวอร์ อาจส่งด้วย scp แบบนี้
scp ~/.ssh/id_rsa.pub phyblas@hinaboshi.com:~/.ssh/authorized_keys
แต่ถ้าหากเราเคยใส่ ssh key ของเครื่องอื่นไว้อยู่แล้วก็จะมีไฟล์ ~/.ssh/authorized_keys อยู่แล้ว แบบนี้จะต้องเขียน ssh key ใหม่นี้ต่อเข้าไปโดยไม่ลบของเก่าทิ้ง ไฟล์นี้ต้องบันทึก ssh key ของทุกเครื่องที่ต้องการใช้ต่อเข้ามา ถ้าต้องการต่อเข้ามาจากหลายๆที่ได้
แบบนี้อาจโอนไฟล์เข้าไปก่อน
scp ~/.ssh/id_rsa.pub phyblas@hinaboshi.com:~
จากนั้นค่อยใช้ cat เพื่อนำ ssh key ไปเขียนต่อท้าย
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
ต้องใช้ >> เพื่อให้เป็นการเขียนต่อกันไป เพราะถ้าใช้ > จะเป็นการลบของเก่าทิ้ง
อย่างไรก็ตาม หากทำตามนี้แล้วยังไม่ได้ผลอาจหมายความว่าเครื่องนั้นมีการตั้งค่าไว้ให้ไม่สามารถเชื่อมต่อโดยใช้ ssh key แทนรหัสผ่านได้
ถ้าหากเครื่องนั้นเป็นเครื่องที่เรามีสิทธิ์ root ก็ให้ลองเข้าไปดูที่ไฟล์ /etc/ssh/sshd_config หาดูว่ามีการตั้งค่าเป็นแบบนี้หรือไม่
PubkeyAuthentication=yes
PasswordAuthentication=no
ถ้าไม่ใช่ให้ตั้งให้เป็นตามนี้จึงจะเข้าได้
เมื่อมีการแก้ไขแล้วก็ต้องสั่ง
/etc/init.d/sshd restart
จากนั้นลองดูใหม่ เท่านี้ก็น่าจะเข้าได้โดยไม่ต้องใช้รหัสผ่าน
อ้างอิง