SFTP บนเซิร์ฟเวอร์สองครั้ง


15

ฉันกำลังพยายามหาวิธีที่จะอนุญาตให้ฉันเข้าถึงไฟล์บนเซิร์ฟเวอร์ SFTP มากกว่าที่ฉันไม่สามารถเข้าถึงได้จากเครื่องท้องถิ่นของฉัน ขณะนี้ฉันต้อง SSH ไปยังเซิร์ฟเวอร์ระยะไกล (มันอยู่ในบล็อก IP บางอย่างที่เซิร์ฟเวอร์ SFTP สุดท้ายจะยอมรับจาก) จากนั้นมี SFTP ไปยังเซิร์ฟเวอร์ปลายทาง จากนั้นฉันไฟล์ที่ฉันสนใจในจึงวางพวกเขาบนเซิร์ฟเวอร์พ่อค้าคนกลางจากที่ผมได้รับไฟล์อย่างใดอย่างหนึ่งมากกว่าหุ้นแซมบ้าหรือโดยตรงget scpฉันยังทำงานในสิ่งที่ตรงกันข้ามที่ฉันวางไฟล์ลงบนพ่อค้าคนกลาง SSH ไปที่ SFTP แล้วไปยังปลายทางและputไปยังโฟลเดอร์ที่เหมาะสม

เป้าหมายของฉันคือทำให้สั้นลง ข้อ จำกัด ที่โชคร้ายคือเครื่องของฉันคือ Windows (ฉันใช้ KiTTy และ / หรือ Cygwin) และฉันไม่สามารถแก้ไขเซิร์ฟเวอร์มิดแมน (หรือเซิร์ฟเวอร์ปลายทาง) ได้ แต่อย่างใด ฉันยินดีที่จะใช้บรรทัดคำสั่งหรือโปรแกรม GUI ตราบเท่าที่มันใช้งานได้และฟรี

ความคิดใด ๆ

คำตอบ:


24

ในสาระสำคัญโดยไม่ต้องมี GUI หรือสิ่งอำนวยความสะดวกอื่น ๆ :

ssh -o ProxyCommand='ssh myfirsthop nc -w 10 %h %p' mydestination

คุณสามารถใช้ค่าเริ่มต้นนี้ได้โดยแก้ไขไฟล์กำหนดค่าเริ่มต้น ~ / .ssh / config

Host mydestination, mydest2, mydest3
ProxyCommand ssh myfirsthop nc -w 10 %h %p

จากนั้นให้คุณทำ

ssh mydestination
scp mydest2:file.txt ./
scp file.txt mydest3:/tmp/

แน่นอนว่าด้วยเวทมนต์แบบนั้นคุณสามารถทำได้โดยง่าย

mkdir -pv /tmp/mydest3tmp          # create mountpoint
sshfs mydest3:/tmp /tmp/dest3tmp/  # mount :)

ใน windows คุณต้องใช้ WinSCP ซึ่งมาพร้อมกับ (ฉันคิดว่า IIRC) PLINK (จากชุด Putty) ฉันคิดว่าตำแหน่งเริ่มต้นสำหรับconfigไฟล์ssh จะแตกต่างกัน (ฉันต้อง google เพื่อมัน) แต่ฉันแน่ใจว่ามันใช้งานได้มากกว่าหรือน้อยกว่าเดิม

โปรดทราบว่าสิ่งเดียวที่คุณต้องการสำหรับการทำงานนี้คือ 'netcat ( nc)' บนเซิร์ฟเวอร์กลาง (hop แรก) มันเป็นเครื่องมือที่แพร่หลายใน linux / UNIX [1]; มันค่อนข้างง่ายในการสร้างเวอร์ชันที่เชื่อมโยงแบบสแตติกซึ่งควรใช้งานได้หากคุณสามารถคัดลอกมันไปยังตำแหน่งแรกได้

[1] โปรดทราบว่ามีบางรสชาติดังนั้นตัวเลือก -w อาจจำเป็นต้องลด / สะกดคำแตกต่างกัน


1
คุณไม่ทราบว่ามันทำให้ฉันมีความสุขแค่ไหน :) สมบูรณ์แบบ!
josh.trow

@ josh.trow: ไม่ แต่ฉันดีใจที่คุณบอกฉัน :) ทุกที่ทุกเวลา
sehe

แม้ว่าตามที่ @ josh.trow พบแล้ว WinSCP มีคุณลักษณะการสร้างช่องสัญญาณในตัว (ดูคำตอบอื่น ๆ ) หากคุณจำเป็นต้องใช้การตั้งค่าช่องสัญญาณจริงโดยแอปพลิเคชันภายนอกจริง ๆ นี่คือแนวทาง: winscp.net/eng/docs/ guide_tunnel
Martin Prikryl

9

ฉันจะไม่ตั้งค่านี้เป็นคำตอบที่ยอมรับเพราะฉันจะไม่พบมันโดยไม่ต้อง @sehe และ @Jakub แต่นี่คือสิ่งที่ฉันพบที่ทำให้ทุกอย่างง่ายขึ้น ...

WinSCP มีความสามารถในการใช้อุโมงค์ SSH ในตัว ฉันไม่รู้ว่าเมื่อไรที่คุณสมบัตินี้มาถึง แต่ฉันไม่เคยสังเกตเห็นมาก่อน

การตั้งค่า WinSCP Tunnel


เอกสารของคุณลักษณะการขุดอุโมงค์: winscp.net/eng/docs/tunnelingและwinscp.net/eng/docs/ui_login_tunnel
Martin Prikryl

ทำงานใน filezilla ด้วยเช่นกัน!
Hayden Thring

คุณลักษณะนี้อนุญาตเฉพาะอุโมงค์เดียว ... จะเพิ่มอุโมงค์ที่สองได้อย่างไร
zeetit

@zeetit แล้วคุณต้องใช้อุโมงค์ภายนอก ตัวเลือกการเจาะช่องสัญญาณทั้งหมดได้รับการบันทึกไว้ในคู่มือ WinSCP เกี่ยวกับการเจาะช่องสัญญาณ
Martin Prikryl

2

หนึ่งในคำแนะนำของฉันคือการสร้างถุงเท้าพร็อกซี่โดยใช้ผงสำหรับอุดรู (จากกล่องหน้าต่างของคุณ) จากนั้นให้พร็อกซีไคลเอนต์ SFTP ของคุณอยู่เหนือพร็อกซี่ (พูด Filezilla sftp)

คุณไม่จำเป็นต้องทำอะไรเป็นพิเศษเพียงแค่เปิดพร็อกซีถุงเท้าของคุณ putty socks5 และเปิดไฟล์ filezilla แล้วเปลี่ยนไฟล์ของคุณไปยังเซิร์ฟเวอร์ปลายทาง

(you ==socks5 proxy==> middle server) ==> destination server

ดูเหมือนว่าคุณกำลังแก้ไขปัญหาที่แตกต่างออกไป ปัญหาของ OP คือปลายทางสุดท้ายไม่สามารถกำหนดเส้นทางได้จากการรับส่งข้อมูล SSH ของลูกค้าขาออกก็โอเค ( ผมเชื่อว่าวิธีการแก้ปัญหาของคุณเป็นสิ่งจำเป็นเพื่อ 'อุโมงค์' จราจร SSH กว่าพร็อกซี่? )
sehe

@sehe .. อะไรนะ คุณตั้งค่าพร็อกซี SSH ถุงเท้า 5 (ช่องสัญญาณ ssh ไปที่กล่องตรงกลาง) จากนั้นคุณเพียงเชื่อมต่อทราฟฟิก SFTP ของคุณไปยังกล่องปลายทางโดยทำการปลอมตัวเป็นเซิร์ฟเวอร์กลาง ฉันกำลังแก้ไขปัญหาอะไรอีก
Jakub
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.