- ประเด็นคือจะใช้ scp ใน shell script โดยใช้ private key ในการ login ssh
Step
- บนเครื่อง client เราจะสร้าง key ที่ฝั่งนี้นะ
$ ssh-keygen
- มันจะให้เราตั้งชื่อ key เขงเรา ถ้าไม่ใส่แล้ว enter เราจะได้ private key คือ id_rsa และ public key คือ id_rsa.pub
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
- ถ้ามันมีไฟล์ชื่อนี้อยู่แล้วมันจะแสดงแบบนี้
Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
- ใส่ passphrase อะไรก็ได้ หรือ ไม่ใส่ก็ได้ (ผู้เขียนแนะนำไม่ใส่นะคับ เพราะถ้าใส่แล้ว ก็ต้องใช้ passphrase แทน password อยู่ดี) แล้ว enter ได้เลย
Output
Enter passphrase (empty for no passphrase):
- ได้ผลลัพธ์แบบนี้คือ เรียบร้อย
Output
Your identification has been saved in /your_home/.ssh/id_rsa
Your public key has been saved in /your_home/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host
The key's randomart image is:
+---[RSA 3072]----+
| .|
| + |
| + |
| . o . |
|o S . o |
| + o. .oo. .. .o|
|o = oooooEo+ ...o|
|.. o *o+=.*+o....|
| =+=ooB=o.... |
+----[SHA256]-----+
- จากนั้น ให้เราทำการ คัดลอกข้อมูลใน id_rsa.pub คัดลอกไปวางไว้ ที่ไฟล์บน server ทำได้ 2 แบบ
- แบบแรกด้วย ssh-copy-id
$ ssh-copy-id username@remote_host
- คำสั่งนี้มันจะทำการคัดลอกข้อมูลใน id_rsa.pub ไปวางในไฟล์ username@remote_host:~/.ssh/authorized_keys
- แบบสอง manual copy content to server
- คือให้เราคัดลอกข้อมูลใน id_rsa.pub ไปวางที่ไฟล์ authorized_keys บน server ที่เราจะ remote ไป พาธจะอยู่ประมาณนี้ /root/.ssh/authorized_keys หรือ /home/username/.ssh/authorized_keys
- ทดสอบที่ฝั่ง client remote โดยใช้ private key
$ ssh -i ~/.ssh/id_rsa username@remote_host
- หรือเราจะได้ map drive ด้วย private key โดย
$ sudo sshfs -o IdentityFile=~/.ssh/id_rsa username@xxx.xxx.xxx.xxx:/ /mnt/droplet
Add
- private key (id_rsa) อันนี้เราเอาไปใช้ที่ client เครื่องอื่น ได้เลย โดยไม่ต้องไปสร้าง key สำหรับ client ใหม่ให้เสียเวลา
- อีกเรื่อง คือ private key default ที่เราสร้างขึ้นโดยไม่ใส่ชื่อ คือ id_rsa (Ubuntu 18.04 client สร้าง)
- ปกเราจะใช้ ssh remote แบบนี้ ในกรณีใช้ public key authen
$ ssh -i /home/user/.ssh/id_rsa user@remotehost
$ scp -i /home/user/.ssh/id_rsa /localpath/file.txt remoteuser@remotehost:/path/copyto/
$s
- แต่เราสามารถใช้โดยไม่ต้องระบุ -i ได้เลย
$ ssh user@remotehost
$ scp /localpath/file.txt remoteuser@remotehost:/path/copyto/
- เข้าใจว่า เรา login userใหนอยู่มันจะไปหา private key ค่าเริ่มต้น ในที่นี้คือ /home/user/.ssh/id_rsa เลือกใช้ให้อัตโนมัติเลย
- กรณีที่เราตั้งชื่อ private key เป็นชื่ออื่นเราต้องใช้ -i ตามด้วยพาธไฟล์ private คือ ด้วยนะ
- หรือ private key ใช้ชื่อ id_rsa อยู่แต่พาธไฟล์ไม่ได้อยุ่ภายใต้ /home/user/.ssh/ แบบนี้ก็ต้องใช้ option -i ด้วยเหมือนกรณีด้านบน
Ref
- https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-20-04
- https://blog.inslash.com/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh-5562de89b80b
No comments:
Post a Comment