Tunneling การเชื่อมต่อ FTP จากที่บ้านโดยที่เซิร์ฟเวอร์ยอมรับเฉพาะ IP ในตัวเครื่อง


10

ฉันจำเป็นต้องเข้าถึงเซิร์ฟเวอร์ FTP ที่ทำงาน แต่เซิร์ฟเวอร์จะยอมรับเฉพาะ IP ท้องถิ่น ฉันไม่สามารถเข้าถึงได้จากเครื่องที่บ้านของฉัน ฉันสามารถ ssh ลงในเครื่องทำงาน Unix ของฉันผ่าน PuTTY และจากนั้นเปิดการเชื่อมต่อ FTP ของคอนโซลไปยังเซิร์ฟเวอร์ FTP ได้สำเร็จ

ฉันสามารถทำงานผ่านสิ่งนี้ได้ แต่ฉันไม่ชอบเพราะมันยุ่งยากสำหรับฉันมาก ฉันต้องการขุดอุโมงค์เชื่อมต่อ FTP ผ่านเครื่องทำงานผ่าน PuTTY ดังนั้นฉันอาจใช้ไคลเอนต์ FTP ของฉันที่เลือกคือ FileZilla เพื่อบรรลุความต้องการ FTP ของฉันบนเซิร์ฟเวอร์ แน่นอนว่านี่คือผ่านพอร์ต 21

ฉันรู้ว่า PuTTY สามารถส่งต่อพอร์ตผ่าน ssh ฉันไม่แน่ใจว่าจะใช้มันอย่างไร

หน้าแรก -> งาน -> เซิร์ฟเวอร์


ไม่มีอะไรแตกต่างกันอย่างแน่นอนเกี่ยวกับการอัปโหลดและดาวน์โหลดผ่านการเชื่อมต่อพร็อกซี SOCKS ความแตกต่างที่สำคัญคือการเชื่อมต่ออินเทอร์เน็ตในบ้านของคุณมีแนวโน้มที่จะมีประสิทธิภาพในการอัปโหลด (ขาออก) ไม่ดีเมื่อเทียบกับประสิทธิภาพการดาวน์โหลด (ขาเข้า) เราอาจต้องการบันทึกเพิ่มเติมเพื่อให้สามารถวิเคราะห์ได้
EightBitTony

ฉันได้ข้อสรุปว่าฉันอาจจะเจอปัญหาอื่นทั้งหมดและจะพยายามสร้างคำถามใหม่ที่ตอบปัญหานี้โดยเฉพาะ ขอบคุณมากสำหรับความช่วยเหลือของคุณ EightBitTony!
Ben Jacobson

อาจต้องการลงทะเบียนบัญชี Server Fault ของคุณด้วยข้อมูลประจำตัวเดียวกันกับที่นี่เพื่อเรียกคืนคำถามนี้ @ben
สุ่ม

คำตอบ:


13

ใช้พร็อกซี SOCKS

หน้าต่าง PuTTY

พอร์ตต้นทางในขณะนี้ (ภายในเครื่อง) เป็นพร็อกซี SOCKS กำหนดค่า FileZilla เพื่อใช้เป็นพร็อกซี SOCKS (ดูด้านล่าง) มันจะเปิดการเชื่อมต่อผ่านไปยังโฮสต์ที่คุณ ssh (เครื่องทำงานของคุณ) แล้วเชื่อมต่อจากที่นั่นไปยังที่อยู่ IP ที่คุณให้ไว้ ใช้งานได้กับทุกสิ่งที่รองรับ SOCKS และรวมถึง FTP

ส่วนที่เหลือของ PuTTY config ยังคงเหมือนเดิม - กำหนดค่าพอร์ต (ดังที่แสดง) จากนั้นเชื่อมต่อเซสชัน PuTTY นั้นกับเครื่องทำงานของคุณผ่าน SSH

นี่คือสิ่งที่ตัวเลือก FileZilla ต้องมีลักษณะดังนี้

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อคุณกำหนดเป้าหมายสำหรับการเชื่อมต่อ FTP ให้ใช้ที่อยู่ IP ไม่ใช่ชื่อโฮสต์เนื่องจากการแก้ไข DNS อาจเกิดขึ้นภายในเครื่องและคุณไม่ต้องการ

สิ่งทั้งหมดมีความปลอดภัยและมองไม่เห็น - ดูเหมือนการเชื่อมต่อ SSH พื้นฐานกับสิ่งอื่นบนเครือข่าย

หมายเหตุ: หากคุณต้องการทำสิ่งนี้จากบรรทัดคำสั่งคุณสามารถใช้ PuTTY plink.exeเพื่อทำสิ่งต่อไปนี้

plink -ssh -D 9090 you@your.work.laptop.example

ทำได้ในสิ่งเดียวกันโดยไม่ต้องสร้างโปรไฟล์ PuTTY หรือใช้ GUI


ฉันชอบวิธีการทำมากกว่าคำตอบของฉันเล็กน้อย คุณสามารถตั้งค่า SOCKS proxy ใน filezilla ภายใต้ "Generic Proxy" และอย่าลืมใช้มันใน "passive mode"
Philip Couling

2

ประการแรกมันง่ายกว่า / ดีกว่าในการใช้ SCP เมื่อคุณมี SSH มันจะเป็นเรื่องปกติที่คุณจะสามารถเข้าถึง SCP ได้เช่นกัน แต่ฉันไม่รู้จักเครือข่ายของคุณดังนั้นคำถาม ...

ก่อนอื่นตรวจสอบให้แน่ใจว่าไคลเอนต์ของคุณถูกตั้งค่าให้ใช้ FTP ในโหมดใช้งานอยู่ ฉันอยากจะแนะนำให้ใช้โหมดพาสซีฟ แต่คุณไม่สามารถควบคุมได้ว่าจะใช้พอร์ตไหน

ประการที่สอง จำกัด จำนวนพอร์ตที่ไคลเอนต์ FTP ของคุณจะใช้ในโหมดแอคทีฟลงไปเป็นกำมือ น้อยกว่าที่ 10 จะดี และนี่คือเหตุผล

สร้างพอร์ตระยะไกลสามเพื่อส่งต่อสำหรับพอร์ตเหล่านี้ทั้งหมด

ที่ควรทำให้มันใช้งานได้


1

ต่อไปนี้เป็นวิธีเรียกดูระบบไฟล์ของเซิร์ฟเวอร์ภายใน (หลัง NAT), ด้วย FileZilla หรือกับ Nautilus File Manager - ใช้SFTP (เซสชัน SSH บน TCP พอร์ต 22), ผ่านเกตเวย์เซิร์ฟเวอร์ (นอก NAT):

  1. วิ่งครั้งแรกในเทอร์มินัล:

sudo ssh -L 9090: {ชื่อโฮสต์เซิร์ฟเวอร์ภายในหรือ IP}: 22 root @ {ชื่อโฮสต์เซิร์ฟเวอร์หรือ IP เซิร์ฟเวอร์เกตเวย์}

  1. จากนั้นสร้างการเชื่อมต่อใหม่

    ใน FileZilla:

    • โฮสต์: sftp: //127.0.0.1
    • ชื่อผู้ใช้ / รหัสผ่าน: ข้อมูลรับรองของเซิร์ฟเวอร์ภายใน
    • พอร์ต: 9090 (พอร์ตเดียวกับในคำสั่งเทอร์มินัล)

หรือใน Nautilus:

sftp://127.0.0.1:9090/จากนั้นคุณจะได้รับแจ้งให้ป้อนข้อมูลประจำตัวเซิร์ฟเวอร์ภายใน

ตอนนี้คุณควรจะสามารถเรียกดูระบบไฟล์เซิร์ฟเวอร์ภายใน


ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ: อย่างที่คุณเห็นมันไม่จำเป็นต้องตั้งค่า SOCKS Proxy ใน Putty หรือใน FileZilla :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.