SSH Tips : Remote to Server without password via ssh
SSH Tips : Remote to Server without password via ssh
สำหรับวันนี้เราจะมาคุยกันในส่วนของการรีโมทเข้าเซิร์ฟเวอร์ โดยที่เราไม่ต้องใส่รหัสผ่านครับ โดยใช้โปรแกรม ssh ซึ่งเป็นโปรแกรมที่เชื่อมต่อกับเซิร์ฟเวอร์ด้วย Secure Protocol ทำให้ป้องกันการดักรหัสผ่านระหว่างเดินทางบนเน็ตเวิร์กได้อีกด้วย
แต่ในบทความนี้ที่จะแนะนำในการเชื่อมต่อเซิร์ฟเวอร์โดยไม่ต้องใส่รหัสผ่าน เพราะบางครั้งเราอาจจะเขียนสคริปต์ในการรีโมทไปจัดการเซิร์ฟเวอร์หลายๆเครื่องเช่น monitoring, administration, etc ดังนั้น บทความนี้จะเป็นประโยชน์แน่นอนครับ
เริ่มต้นโจทย์กำหนดให้มีเครื่อง host-A : 10.3.0.11 , host-B : 10.3.0.12 โดยให้เครื่อง USR1 บนเครื่อง host-A รีโมทเข้า USR2 บนเครื่อง host-B โดยไม่ใส่รหัสผ่าน เรามีขั้นตอนดังนี้
ที่เครื่อง host-A
1. Login to USR1 @ host-A
2. user USR1 เรียกคำสั่ง ssh-keygen เพื่อสร้าง private, public key ดังนี้
(usr1)$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/usr1/.ssh/id_dsa):
Created directory ‘/home/usr1/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usr1/.ssh/id_dsa.
Your public key has been saved in /home/usr1/.ssh/id_dsa.pub.
The key fingerprint is:
11:b3:08:5c:4a:3c:4a:f6:70:f0:ab:a7:21:c7:ca:3c usr1@host-A
เราจะได้ private key = id_dsa และ public key = id_dsa.pub
2. Copy public key ไปไว้ที่ user เครื่องปลายทางที่เราต้องการรีโมทโดยไม่ต้องใส่รหัสผ่าน ในที่นี้คือ copy ไปที่ home ของ user “USR2″@host-B
ที่เครื่อง host-B
3. สร้างไฟล์ authorized_keys เพื่อทำ trust server ดังนี้
host-B[/home/usr2]$ mkdir .ssh
host-B[/home/usr2]$ cd .ssh
host-B[/home/usr2/.ssh]$ cat ../id_dsa.pub > authorized_keys
เราสร้างไฟล์ authorized_keys ไว้ที่ $HOME/.ssh ของ user นั้นๆ โดยเรียกดูในไฟล์จะเห็นดังนี้
host-B[/home/usr2]/.ssh]$ more authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAMjlIX6/UoFG9QioQsBg+DUTK+bu2tnusDkL+4uAVdRW+6pA5eBaOr2cTB4lkNYlQRTMz4+DXrBJm33VPl94CDvfkTIDQ2rw0+2gOHJx
rWikB4e7CCc9M3a6xZI4Zs/QcuCahN7mwuc+caSJiG/oNCCZlbZx8c5OYl0QlNq+B8SdAAAAFQCpaA/suX2jqo0BQnZTCN0wTO+K/wAAAIEAngAn2U+ZbzD2/Z1hfRj1Ms00
4ZV3wk+NyXzbkm39CFc97MuJOB6DPonQrO74nC07hpzvPSmLIOXu1+NHnNqd/sazaAdzWDTuNNodfGUTEbzo31RIrmc01q0UeTT2stRrW0xAboHSFxfUMbC21nrxjlFIBE81
rBTWtlSQr2kmkWkAAACAOQa9lILJYe/8Mk43SEODHJgWh3g5oa0EGKO7AZ34Otn/An2RbjkFLBo+ZDcvpvaaOTkICCXkjJt2Gstixn6uIPp0yBymr+523HSyaw1cIlEpV9qt
3bLqfosJ/UxsFuCu6SqsR6RGHG02dcwU0RAJ4bP8pnRKfZARoZnX5zYwVg8= usr1@host-A
ที่เครื่อง host-A
4. ทดสอบการเชื่อมต่อโดยไม่ต้องใส่รหัสผ่านจาก USR1@host-A –> USR2@host-B
(usr1)$ ssh -l usr2 host-B
host-B[/home/usr2]$
ถ้าเชื่อมต่อได้ก็จะทำการ แสดงผลเป็น prompt บนเครื่องปลายทางเลย เป็นอันจบครับ นอกจากนี้การ setup ssh without password ยังมีผลกับโปรแกรมอื่นๆด้วย เช่น scp, sftp, etc