เชื่อมต่อ Droplet ด้วย OpenSSH
เชื่อมต่อ Droplet ด้วย OpenSSH เป็นการเชื่อมต่อผ่านทาง Terminal ซึ่งมีหลาย OS เช่น Linux MacOS windows สำหรับ DigitalOcean Droplet มันคือ เครื่องเสมือนที่ทำงานบน Linux หลักการงาน คือเมื่อเราซื้อพื้นที่จาก DigitalOcean แต่ละ Droplet เราสามารถสร้างเป็น Server ใหม่ของเราเอง
การจัดการเกี่ยวกับ DigtalOcean Droplet จะใช้ termenal และ ssh ในการจัดการหรือแก้ไขปรับแต่งค่า เพราะฉะนั้นในเครื่องคอมพิวเตอร์ของเราต้องมี SSH client และต้องสร้าง SSH key ไว้เปรียบเทียบระหว่าง SSH Key ในคอมพิวเตอร์ของเราและใน Droplet
การตรวจสอบเพื่อเข้าเชื่อมต่อกับระหว่าง เครื่องลูกกับDroplets มีช่องทาง ที่สามารถเลือกได้ โดยการใช้ password แต่ความปลอดภัยต่ำ หรือจะใช้การเชื่อมต่อผ่านทาง SSH Key ซึ่งจะมีความปลอดภัยสูง ที่จะอธิบายในบทความนี้
ในการ Login เพื่อเข้าใช้งาน Droplet ด้วย SSH เราจะต้องรู้รายละเอียดดังนี้
- Ip Address ของ Droplet
- ชื่อผู้ใช้ ใน Server
- รหัสผ่าน ของผู้ใช้ ในกรณีที่ ไม่ใช้ SSH Key
Table of Contents
การเข้าไปดูค่า Ip Address ของ Droplet
เข้าไปยัง DigitalOcean Control Panel เพื่อดูค่า Ip Address ในแถวที่เราสร้าง Droplet สามารถเอาเมาส์ไปวางไว้ข้างบนแล้ว แล้วคัดลอกมาได้
ในขั้นตอนการสร้าง Droplet มีตัวเลือกในการเชื่อมต่อ เพราะฉะนั้น เราต้องเลือกว่า จะเชื่อมต่อแบบ Add SSH Key หรือ ใช้ Password ในการเชื่อมต่อ ถ้าใช้แบบ SSH key ก็ต้อง เพิ่ม SSH key ก่อน เราจึงสามารถจะเชื่อมต่อผ่านทาง SSH หรือ ผ่าน command line ที่เครื่องลูกได้ แต่หากเราต้องการให้ตรวจสอบการเชื่อมต่อ โดยระหัสผ่าน ก็ต้องกำหนดรหัสผ่าน ขณะสร้าง Droplets
การใช้งานผ่าน OpenSSH
การเชื่อมต่อ Droplets ด้วย SSH KEY เป็นการสร้าง Key เพื่อไว้สำหรับการเชื่อมต่อจากเครื่องคอมพิวเตอร์ของเราหรือที่เรียกว่าเครื่องลูกไปยัง Droplet จะใช้ terminal ในการใช้งาน terminal แล้วแต่ว่า คอมพิวเตอร์ที่เราใช้งานในระบบปฎิบัติการแบบใด โดยปกติจะใช้วิธีดังนี้
- Linux: Search Terminal or press CTRL+ALT+T.
- macOS: Search Terminal.
- Bash on Windows: Search Bash. If you don’t have Bash on Windows, use PuTTY instead.
เมื่อเปิด terminal แล้ว ให้ใช้คำสั่ง SSH ตามตัวอย่าง
ssh root@203.0.113.0
แต่ ถ้าเราสร้าง หลายๆๆ SSH Key เราจะต้องกำหนดเส้นทางที่วาง Key ในเครื่องของเรา โดยใช้ เครื่องหมาย -i เช่น ssh -i /path/to/private/key username@203.0.113.0
การเพิ่ม SSH Keys ไปยัง Droplets
ที่มาของบทความการเชื่อมต่อ Droplets ด้วย SSH KEY
เนื่องจาก ตอนสร้าง Droplets ได้สร้าง SSH Keys ผ่านทาง Putty เพราะขณะสร้าง ได้ใช้เครื่องที่เป็นระบบปฎิบัติการวินโดว์ แต่ พอมาใช้งานจริงเพื่อติดตั้ง FAMP การทำงานผ่าน Putty มันสะดวกสู้การทำงานผ่าน command line บน ระบบปฎิบัติการ Linux ไม่ได้ เมื่อเชื่อมต่อโดยผ่าน command line จะแจ้งว่า Permission denied (publickey)
ไม่สามารถเชื่อมต่อได้ เลยสร้างบทความนี้ไว้เป็นบททึกความจำขั้นตอนในการสร้าง เพื่อเชื่อมต่อโดยใช้ Arch linux
การสร้าง SSH key ด้วย OpenSSH
เริ่มต้นที่เครื่องลูกก่อน ใช้คำสั่ง ssh-keygen ซึ่งเป็นเครื่องมือที่ให้มาพร้อมกับ Openssh เพื่อ generate key pairs
ssh-keygen
หลังจากใช้คำสั่ง นั้นโปรแกรมจะสอบถามให้เลือกที่ตั้งของ Keys โดยปกติ จะเก็บไว้ใน ไดเร็กเตอรี่ ~/.ssh จะมีชื่อ 2 ชื่อ คือ id_rsa สำหรับ private Key และ id_rsa.pub สำหรับ Public Key ให้เอาตามที่โปรแกรมแจ้งมาเลย เพราะมันจะสะดวกในขั้นตอน เครื่องลูกค้นหา SSH Key
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
หลังจากเราเลือกที่ตั้งของ Key แล้ว จะเข้าสู่หน้า สร้าง Passphrase หากสร้างตัวนี้ ในการเชื่อมต่อทุกครั้งจะต้องกรอก Passphrase หากไม่ต้องการสร้าง กด Enter ข้ามไปได้
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
หลังจากเสร็จสิ้นทุกขั้นตอน โปรแกรมจะแสดงที่ตั้ง และชื่อของ Pubic key และ Private key สำหรับใช้ในการตรวจสอบเมื่อเชื่อมต่อระหว่างคอมพิวเตอร์ของเรากับ Droplets
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:EX:AM:PL:E3:3e:a9:de:4e:77:11:58:b6:90:26 username@203.0.113.0
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+
การเพิ่ม SSH Keys ไปยัง Droplets ที่สร้างใหม่
หลังจากที่สร้าง SSH Key เสร็จ ต่อมาเป็นขั้นตอนการอัพโหลด เพื่อนำไปเก็บไว้ใน DigitalOcean เพื่อจะสร้างไว้ใน Droplet ของเรา
- log in to the control panel
- click Settings, then click the Security tab at the top of the page to go to the team security settings page.
- In the SSH keys section, click Add SSH Key.
การเพิ่ม การเชื่อมต่อ Droplets ด้วย SSH KEY ที่มีอยู่แล้ว
สมมุติว่า ครั้งแรก ได้ การเชื่อมต่อ Droplets ด้วย SSH KEY แต่สร้างผ่าน Putty ขั้นตอนในการสร้าง เราได้สร้าง SSH Key ในเครื่องของเรา หลังจากนั้น ก็ส่งไปเก็บไว้ใน Droplet เท่ากับว่าใน Droplet มี SSH Key อยู่แล้ว แต่ เราสร้างและใช้งานผ่าน Putty ในเครื่องวินโดว์ แต่เราต้องการเชื่อมต่อ Droplets ด้วย SSH KEY เพื่อใช้งานผ่าน Linux
ขั้นตอนการส่งเข้าไปเก็บไว้ใน Droplet มีหลายรูป แต่ ขอแนะนำในส่วนที่คิดว่า ไม่ยาก คือไม่ต้องใช้คำสั่งมาก หรือซ้ำซ้อน แค่ทำตามลำดับที่เราเข้าใจแล้วใช้คำสั่ง ง่ายๆๆ
ในเครื่องคอมพิวเตอร์ของเรา ให้ใช้คำสั่งนี้ เพื่อดูเนื้อหาของ Public Key ในเครื่องของเรา
cat ~/.ssh/id_rsa.pub
คัดลอกตัว SSH Key มาแล้วไว้
ssh-rsa EXAMPLEzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== username@203.0.113.0
ขั้นตอนนี้ หากเราไม่สามารถเชื่อมต่อผ่านทางเครื่องลูกของเราไปยัง Droplet ได้ ให้ใช้วิธีเชื่อมต่อผ่าน Droplet Console หรือไปก็ใช้เครื่องคอมพิวเตอร์อีกตัวที่เราสร้างผ่าน Putty ไว้เพื่อเชื่อมต่อและใช้คำสั่งต่อไปนี้
mkdir -p ~/.ssh
สร้างไฟล์ และเปิด เพื่อแก้ไขหรือเพิ่มเติมข้อมูลที่เราคัดลอกมาลงในไฟล์ หากมีของเดิมให้ใช้วิธีวางแยกบรรทัด
nano ~/.ssh/authorized_keys
หรือจะใช้วิธีการนี้ ก็ได้ แต่ แบบแรกน่าจะดีกว่า แค่เปิดมา แล้วก็วาง
echo "ssh-rsa EXAMPLEzaC1yc2E...GvaQ== username@203.0.113.0" \
>> ~/.ssh/authorized_keys
กำหนดการเข้าถึงไฟล์ที่เราสร้างมาทั้งหมด โดยการใช้คำสั่ง ตามข้างล่าง
คำสั่งแรกคือ การกำหนดสิทธิ์การเข้าถึง
คำสั่งที่สอง คือการเปลี่ยนเจ้าของให้เป็น user ที่เราต้องการ
chmod -R go= ~/.ssh
chown -R $USER:$USER ~/.ssh
ยังมีอีกหลายรูปแบบ สามารถเข้าไปอ่านได้ จากที่นี่ ข้อมูลจากเว็บนี้
ในบทความนี้ เขียนตามความเข้าใจของตัวเอง
เพิ่มเติม เพื่อตรวจสอบการเชื่อมต่อ กรณีที่เราใช้ linux อาจจะมีปัญหากับข้อมูลที่เก็บไว้ในเครื่องของเรา
ให้ใช้คำสั่งนี้ ตรวจสอบได้
ssh -v root@xxxxxxx
ว่าแต่ละชั้นตอนมีปัญหาตรงไหน เพื่อจะได้ปรับแต่งให้สามารถเป็นไปตามขั้นตอนที่โปรแกรมแจ้งมา