Score:0

FTP ผ่าน SSH (ไม่ใช่ SFTP?) เมื่อไฟล์อยู่บนเซิร์ฟเวอร์ที่สามไม่ใช่เซิร์ฟเวอร์ SSH

ธง br

ผมมีเครื่อง A. จากนั้นฉันสามารถ SSH ไปยังเครื่อง B เครื่อง B สามารถ FTP ไปยังเครื่อง C ได้ ฉันต้องการดาวน์โหลดไฟล์จาก C ไปยัง A ฉันไม่สามารถเข้าถึงจาก A ถึง C ได้โดยตรง

                 พอร์ต 20 และ 21
âââââ âââââ การควบคุม FTP ââââââ âââââââââââââ
â â SSH â ââââââââââââââ ââââºâ â
â A ââââââºâ B â â C - พร้อมไฟล์ â
â â â ââââââââââââââ ââââºâ ฉันต้องการ â
ข้อมูล FTP â â
                 พอร์ตสุ่ม ââââââââââââââââ âââ

ฉันรู้ว่ามีคำถามมากมายเกี่ยวกับ SFTP ในเว็บไซต์นี้ เท่าที่ฉันสามารถบอกได้ ซึ่งไม่เหมือนกับ SFTP. ด้วย SFTP ดูเหมือนว่าเซิร์ฟเวอร์ SSH จะต้องเป็นเซิร์ฟเวอร์เดียวกับที่มีไฟล์ให้ดาวน์โหลด ซึ่งไม่ใช่ปัญหาที่นี่ ถูกต้องหรือไม่ หรือมีวิธีใดในการทำเช่นนี้ด้วยคำสั่ง SFTP อย่างง่ายและอาร์กิวเมนต์เพิ่มเติม

มีวิธีง่ายๆ ในการทำเช่นนี้หรือไม่? ไฟล์มีขนาดใหญ่ และดิสก์และหน่วยความจำบน B มีขนาดเล็ก ดังนั้นหากเป็นไปได้ ฉันต้องการสตรีมข้อมูลโดยตรง (เทียบกับการดาวน์โหลด FTP สองขั้นตอนลงดิสก์ของ B.)

โดยทั่วไป SSH สามารถขุดอุโมงค์อะไรก็ได้ แต่เห็นได้ชัดว่า FTP ใช้มากกว่าแค่พอร์ต 20 และ 21 มันใช้พอร์ตแบบสุ่มและคาดเดาไม่ได้จำนวนมาก ซึ่งเป็นพอร์ตใหม่สำหรับการดำเนินการแต่ละไฟล์ ช่วงที่เป็นไปได้ของพอร์ต FTP ดังกล่าวนั้นใหญ่มากจนฉันลองใช้ไคลเอนต์หนึ่งเครื่อง ฉันไม่สามารถส่งต่อพอร์ตทั้งหมดด้วย SSH ได้ (โปรดทราบว่าฉันกำลังพยายาม เฉยเมย FTP ซึ่งการเชื่อมต่อเครือข่ายทั้งหมดเริ่มต้นจากไคลเอนต์เซิร์ฟเวอร์ ตรงข้ามกับ คล่องแคล่ว FTP โดยที่ C จะเริ่มการเชื่อมต่อกลับไปยัง B ซึ่งไม่สามารถทำได้เนื่องจากมี NAT ระหว่างกัน)

ฉันพยายามเขียนสคริปต์ใน python แฮ็กเข้าด้วยกัน ไลบรารีมาตรฐาน FTP และบุคคลที่ 3 ไลบรารีอุโมงค์ SSH. เป็นวิธีแก้ปัญหาที่ค่อนข้างซับซ้อนและยุ่งยาก ซึ่งส่งผลให้ฉันเปิดพอร์ตใหม่สำหรับไฟล์ใหม่ทุกไฟล์ แต่ไม่เคยปิดมัน นอกจากนี้ การอัปเกรดล่าสุดเป็นหนึ่งไลบรารีได้ทำลายการอ้างอิงบางส่วน ดังนั้นตอนนี้สคริปต์จึงใช้งานไม่ได้กับไลบรารีเวอร์ชันล่าสุดเหล่านี้ ฉันถูกล่อลวงให้เขียนวิธีแก้ปัญหาใหม่ด้วยพื้นฐาน ปารามิโกะ ห้องสมุด. แต่ฉันกลัวว่านั่นจะเป็นโพรงกระต่ายลึก สิ่งนี้ช่างเที่ยวยุ่งยิ่งจริงๆ (โปรดแจ้งให้เราทราบหากคุณต้องการเห็นความพยายามของฉัน ฉันพยายามละเว้นเพื่อหลีกเลี่ยง ปัญหา X/Y.)

มีวิธีที่ง่ายกว่านี้ในการขุดอุโมงค์หรือไม่?

ฉันต้องการวิธีแก้ปัญหาด้วย Python แต่ ณ จุดนี้ฉันหมดหวังพอที่จะใช้เครื่องมือใด ๆ

paladin avatar
id flag
คุณจะติดตั้งเซิร์ฟเวอร์ reverse-ftp-proxy บนเครื่อง B ได้อย่างไร พร็อกซีเครื่อง B เซิร์ฟเวอร์ ftp ของเครื่อง C เครื่อง A ใช้ ftp ผ่าน SSH ที่เครื่อง B สิ่งนี้ควรใช้งานได้ง่าย คุณไม่ต้อง "แฮ็กเข้าด้วยกัน" อะไรเลย
Score:3
ธง us
Rob

โซลูชัน "ทั่วไป" สำหรับสิ่งนั้นคือการใช้ไคลเอนต์ FTP ที่มี ถุงเท้า 5 สนับสนุนและแทนที่จะส่งต่อพอร์ตเฉพาะผ่าน ssh ให้กำหนดค่าการส่งต่อพอร์ตแบบไดนามิก (ไคลเอนต์ ssh จะทำหน้าที่เป็นเซิร์ฟเวอร์ SOCKS 5)

จากนั้นโฮสต์ A:

ssh -D localhost:10108 user@host-B 

และกำหนดค่าไคลเอ็นต์ FTP ของคุณเพื่อใช้พร็อกซี SOCKS5 บนพอร์ตนั้น เช่น ใน WinSCP https://winscp.net/eng/docs/ui_login_proxy หรือแก้ไข เอ็นซีพีที ไฟล์การกำหนดค่า $HOME/.ncftp/ไฟร์วอลล์ หรือใช้

ขด --socks5-ชื่อโฮสต์ localhost:10108 ftp://host-c/path/to/file
falsePockets avatar
br flag
เมื่อฉันดูออนไลน์เพื่อเรียนรู้เกี่ยวกับพร็อกซี SOCKS บางไซต์ ([1](https://surfshark.com/blog/socks-proxy), [2](https://www.makeuseof.com/tag/what- is-a-socks5-proxy/)) บอกว่าการรับส่งข้อมูลจาก A ถึง B ไม่ได้เข้ารหัส คุณยืนยันได้ไหมว่าหากฉันทำ SOCKS *ผ่าน SSH* ทราฟฟิกจาก A ถึง B *จะถูกเข้ารหัส* (และแน่นอนว่าจาก B ถึง C จะไม่ถูกเข้ารหัส)
us flag
Rob
การรับส่งข้อมูลทั้งหมดในอุโมงค์จะถูกเข้ารหัส
us flag
Rob
การรับส่งข้อมูลระหว่างไคลเอ็นต์ ftp ของคุณกับถุงเท้าพร็อกซีนั้นไม่ได้เข้ารหัส ซึ่งเป็นข้อกังวลด้านความปลอดภัยหลักเมื่อใช้เซิร์ฟเวอร์ถุงเท้าระยะไกล (ทำงานที่ไหนสักแห่งบนอินเทอร์เน็ตหรือในเครือข่ายองค์กร) แต่ด้วยการส่งต่อพอร์ตแบบไดนามิก ssh เซิร์ฟเวอร์ถุงเท้ากำลังทำงานอยู่ โฮสต์เดียวกัน ไม่ใช่ที่ใดในเครือข่ายองค์กรของคุณหรืออินเทอร์เน็ต
Score:2
ธง bd

คุณสามารถใช้ SSH เป็นพร็อกซี SOCKS ไคลเอนต์ SSH บน A จะทำงานเป็นเซิร์ฟเวอร์ SOCKS5 โดยส่งคำขอเชื่อมต่อทั้งหมดไปยัง B คุณต้องใช้ไคลเอนต์ SOCKSified FTP บน A

วิธีที่คุณเปิดใช้งานฟังก์ชันพร็อกซี SOCKS ขึ้นอยู่กับไคลเอนต์ SSH ที่ใช้งานบน A มองหา "การส่งต่อพอร์ตแบบไดนามิก" ในเอกสารประกอบ สำหรับไคลเอ็นต์ OpenSSH มาตรฐาน ให้ระบุตัวเลือก -D 1080 เพื่อให้ฟังบนพอร์ต SOCKS5 มาตรฐาน สำหรับ PuTTY ให้ไปที่ Connection - SSH - Tunnels ในกล่องโต้ตอบการกำหนดค่า และเพิ่มพอร์ตที่ส่งต่อด้วยปลายทาง "Dynamic"

โพสต์คำตอบ

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