SCP ระหว่างสองเครือข่าย


12

ฉันต้องการถ่ายโอนไฟล์ระหว่างคอมพิวเตอร์สองเครื่องที่ไม่ได้เชื่อมต่อกับเครือข่ายเดียวกัน ฉันมีคอมพิวเตอร์เครื่องที่สามที่สามารถเห็นเครือข่ายทั้งสองผ่าน VPN

จากคอมพิวเตอร์เครื่องที่สามฉันสามารถทำได้:

scp root@firstcomputer:./file ./

และสิ้นสุดการถ่ายโอนด้วยประโยคต่อไปนี้:

scp ./file root@secondcomputer:./

แต่ฉันไม่สามารถทำได้ในหนึ่งบรรทัดดังนี้:

scp root@firstcomputer:./file root@secondcomputer:./

การตอบสนองข้อผิดพลาดคือ

ssh: connect to host secondcomputer port 22: No route to host
lost connection

ฉันรู้ว่าอาจเป็นเพราะคอมพิวเตอร์เครื่องแรกไม่เห็นคอมพิวเตอร์เครื่องที่สอง เป็นไปได้หรือไม่ที่จะให้ SCP กับพารามิเตอร์ที่เกี่ยวข้องกับความจริงที่ว่าเครื่องที่ใช้โปรแกรม SCP นั้นเป็นเครื่องเดียวที่สามารถเห็นคอมพิวเตอร์ทั้งสองเครื่องได้หรือไม่?

อย่างไรก็ตามคอมพิวเตอร์เครื่องที่สามคือ Mac ที่มี Lion และกำปั้นและที่สองกำลังเรียกใช้ Debian

คำตอบ:


3

คุณควรจะสามารถใช้อุโมงค์ SSH

สมมติว่าคุณกำลังพยายามถ่ายโอนไฟล์จากคอมพิวเตอร์ระยะไกล ("ระยะไกล") ไปยังเครื่องคอมพิวเตอร์ของคุณ ("ท้องถิ่น") สร้างอุโมงค์ผ่านคอมพิวเตอร์เครื่องที่สาม ("เกตเวย์") โดยพิมพ์บนคอมพิวเตอร์ของคุณ:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

จากนั้นคุณสามารถเรียกใช้คำสั่ง SCP ได้ไม่ จำกัด จำนวนบนอุโมงค์นี้ (ยังพิมพ์อยู่ในคอมพิวเตอร์ของคุณ):

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

ฉันเพิ่งทดสอบสิ่งนี้ในเครือข่ายของฉันและมันทำงานได้อย่างสมบูรณ์

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


21

ตัวเลือก scp -3 ควรเป็นสิ่งที่คุณกำลังมองหา ที่จะใส่ไว้ในตัวอย่างของคุณ:

scp -3 root@firstcomputer:./file root@secondcomputer:./

โปรดทราบว่าตัวเลือก -3 ได้รับการแนะนำครั้งแรกใน OpenSSH 5.7 ซึ่งเปิดตัวในต้นปี 2554


scp ของฉันไม่ได้ใช้ -3 เมื่อฉันรันคำสั่ง comand ฉันได้รับ scp: ตัวเลือกที่ผิดกฎหมาย - 3 การใช้งาน: scp [-1246BCEpqrv] ...
JorgeO

1
ถูกต้อง. -3 มีเฉพาะใน OpenSSH เวอร์ชันล่าสุดเท่านั้นซึ่งฉันไม่แน่ใจว่า Debian ได้ใช้งานแล้ว
Rilindo

อ่าขอโทษด้วย อัปเดตคำตอบเกี่ยวกับข้อกำหนดของเวอร์ชัน
andol

1

คุณสามารถลองสิ่งนี้:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

การทำเช่นนี้จะเป็นการคัดลอกไฟล์ไปยังไดเรกทอรี / tmp บนคอมพิวเตอร์เครื่องที่สามและหากประสบความสำเร็จก็จะทำการคัดลอกไฟล์นั้นไปยังคอมพิวเตอร์เครื่องที่สองแล้วล้างข้อมูลด้วยตนเอง เนื่องจากคุณใช้ตัวดำเนินการ && แต่ละคำสั่งจะดำเนินการก็ต่อเมื่อคำสั่งก่อนหน้านั้นสำเร็จ


ไม่ทราบเกี่ยวกับตัวดำเนินการ && ดีกว่าใช้
JorgeO

นี่เป็นเทคนิคเดียวกับที่คำถามดั้งเดิมที่ใช้ในตัวอย่างแรกซึ่งพยายามหลีกเลี่ยง (คัดลอกจากคอมพิวเตอร์ A ไปยังเครื่องท้องถิ่นจากนั้นคัดลอกไฟล์ภายในเครื่องไปยังคอมพิวเตอร์ B)
Jason C
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.