ข้ามไปเนื้อหาหลัก

วิธีใช้ SCP บนพอร์ตกำหนดเองและวิธีเลี่ยงความสับสน -p กับ -P

เจาะลึกการใช้คำสั่ง SCP บนพอร์ต SSH ที่ไม่ใช่ค่าเริ่มต้น พร้อมวิธีแยกแยะอาร์กิวเมนต์ -p และ -P รวมถึงการตั้งค่าผ่าน ~/.ssh/config

เรียบเรียงโดย AI
Inewgen
07 Oct 2026ที่มา: Dev.to2 นาทีอ่าน (0 ครั้ง)
แชร์
วิธีใช้ SCP บนพอร์ตกำหนดเองและวิธีเลี่ยงความสับสน -p กับ -P

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • ใช้พอร์ต SSH กำหนดเองด้วยอาร์กิวเมนต์ตัวพิมพ์ใหญ่ -P ในคำสั่ง scp
  • อาร์กิวเมนต์ตัวพิมพ์เล็ก -p ใช้สำหรับคงเวลาแก้ไขไฟล์และสิทธิ์การใช้งาน
  • ตั้งค่าพอร์ตในไฟล์ ~/.ssh/config ช่วยลดการพิมพ์ -P ซ้ำซ้อน

เมื่อเซิร์ฟเวอร์ SSH ทำงานบนพอร์ตที่แตกต่างไปจากค่าเริ่มต้น คำสั่ง SCP จำเป็นต้องเชื่อมต่อเข้าไปยังพอร์ตเดียวกันนั้น จุดสำคัญที่ผู้ใช้งานมักมองข้ามบ่อยครั้งคือเรื่องตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก โดยในคำสั่ง scp จะต้องระบุพอร์ตด้วยอาร์กิวเมนต์ -P ตัวพิมพ์ใหญ่ เท่านั้น ไม่ใช่ -p ตัวพิมพ์เล็ก

เนื่องจาก SCP ไม่มีพอร์ตเครือข่ายแยกต่างหาก แต่จะอาศัยการเชื่อมต่อผ่าน SSH ซึ่งใช้พอร์ต TCP 22 เป็นค่าเริ่มต้น หากบริการ SSH ของเซิร์ฟเวอร์รันอยู่บนพอร์ต 2222 คำสั่ง SCP ก็ต้องเชื่อมต่อผ่านพอร์ต 2222 เช่นเดียวกัน ตัวอย่างเช่น สำหรับการอัปโหลดไฟล์ครั้งเดียว ให้ระบุพอร์ตดังนี้:

scp -P 2222 report.txt deploy@example.com:/var/tmp/

command line terminal screen close up

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ในทางกลับกัน หากต้องการดาวน์โหลดไฟล์ ให้วางพอร์ตและพาธฝั่งรีโมตไว้ด้านหน้า โดยจุด (.) ตัวสุดท้ายหมายถึงไดเรกทอรีท้องถิ่นปัจจุบัน:

scp -P 2222 deploy@example.com:/var/tmp/report.txt .

การสลับกันระหว่างคำสั่ง ssh และ scp มักสร้างความสับสนให้กับนักพัฒนา เนื่องจาก ssh ใช้ -p ตัวพิมพ์เล็กสำหรับพอร์ต แต่ scp ต้องใช้ -P ตัวพิมพ์ใหญ่ การทำความเข้าใจความแตกต่างนี้ช่วยประหยัดเวลาในการตรวจสอบข้อผิดพลาดและป้องกันปัญหาการเชื่อมต่อล้มเหลว

SCP สงวนอาร์กิวเมนต์ -p ตัวพิมพ์เล็ก ไว้สำหรับการคงค่าเวลาการแก้ไขไฟล์และสิทธิ์เดิมเอาไว้ ผู้ใช้งานสามารถรวมแฟล็กทั้งสองเข้าด้วยกันได้หากต้องการทั้งระบุพอร์ตและรักษาค่าสิทธิ์ไฟล์พร้อมกัน:

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

scp -p -P 2222 report.txt deploy@example.com:/var/tmp/

สำหรับโฮสต์ที่ใช้งานเป็นประจำ การบันทึกรายละเอียดการเชื่อมต่อไว้ในไฟล์ ~/.ssh/config จะช่วยให้สะดวกยิ่งขึ้นโดยไม่ต้องพิมพ์ -P ซ้ำ:

Host staging
HostName example.com
User deploy
Port 2222

chromebook notebook computer office desk workspace

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

เมื่อตั้งค่าแล้ว สามารถใช้ชื่อย่อสำหรับทั้งคำสั่ง ssh และ scp ได้ทันที เช่น scp report.txt staging:/var/tmp/ เนื่องจาก SCP อ่านค่าการกำหนดค่า SSH เดียวกันกับไคลเอนต์ SSH ทั่วไป สำหรับการโอนย้ายไฟล์ระหว่างรีโมตโฮสต์ที่ใช้พอร์ตต่างกัน OpenSSH สมัยใหม่รองรับการใช้งาน SCP URI แยกสำหรับแต่ละจุดปลายทาง หรือสามารถทดสอบการเข้าถึงพอร์ตก่อนเริ่มคัดลอกด้วยเครื่องมืออย่าง nc บน Linux/macOS หรือ Test-NetConnection บน Windows PowerShell ได้

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้