document_cover
ใช้ cloudflare tunnels เพื่อเข้าถึง home server ด้วย ssh
cloudflaresshtunnelserverdns
13 ก.ย. 68 , 15:17
เมื่อก่อนต้อง forward port ให้ยุ่งยาก แถมต้องหาวิธีอัพเดท dns อีก

สร้างท่อ

ไปที่ Cloudflare Zero > Trust Networks > Tunnels สร้าง tunnel ก่อน จากนั้น ก็ไปที่ Public hostnames โดยใส่ข้อมูลดังนี้

  • domain และ sub domain ก็ให้ตั้งชื่อ และเลือกเอา แล้ว cloudflare จะไปสร้าง dns ให้
  • Service ให้เลือก SSH และ URL ให้ใส่เป็น localhost:22 (ถ้า ตั้ง ssh บน home server เป็น 22 นะ)

ฝั่ง Server ติดตั้งสิ่งของที่จำเป็น

จริงๆ เข้าไป ที่หน้า tunnel จะมีรายละเอียดการติดตั้งไว้ให้ครบทีเดียวเชียว แต่ก็จะเขียนไว้ด้วยตรงนี้ละกัน เพื่อให้เนื้อหามันยาวๆ โดยจะเป็น OS debian นะครับ

# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list

# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared

เมื่อติดตั้งเสร็จแล้ว จะมีคำสั่งสำหรับเชื่อมต่อให้

sudo cloudflared service install abcdefgh....

และเมื่อติดตั้งเรียบแล้วแล้ว กลับมาที่หน้า รายการ Tunnels ตรงส่วน Status ควรขึ้นว่า HEALTHY

การเชื่อมต่อ SSH

ดูเหมือน Tunnels จะออกแบบมาให้ใช้กับพวก web เป็นหลัก ดังนั้น ถ้าจะเข้าถึง service อื่นๆ อาจจะต้องใช้ท่ายาก บ้าง เช่น ตอนนี้ ต้องการเข้าถึง ssh

เริ่มจาก ต้องไป download proxy มาเพิ่มก่อน จากลิงค์ด้านล่างนี้

จากนั้น หาที่เหมาะๆ เอาไปวางไว้ เช่น C:\Cloudflare\cloudflared.exe แล้วก็ให้เข้าไปแก้ไขไฟล์ (หรือสร้างใหม่ ถ้ายังไม่มี) C:\Users\YOUR_USERNAME\.ssh\config โดยให้เพิ่มข้อมูลไปดังนี้

Host SUB.DOMAIN_NAME
  ProxyCommand C:\Cloudflare\cloudflared.exe access ssh --hostname %h

SUB.DOMAIN_NAME ก็คือโดเมนที่สร้างเป็น Tunnels ไว้นะครับ , จากนั้นก็ลองเชื่อมด้วย โดเมนปกติเลย

ssh [email protected]_NAME

ถ้าทุกอย่างโอเค มันก็เข้าได้แล้วล่ะตอนนี้