เท่าที่ผ่านมาวิธีที่ง่ายที่สุดคือเพียงแค่คัดลอกผ่าน scp นอกจากนี้ไวยากรณ์นี้ใช้งานได้จริงไม่เหมือนกับคำแนะนำอื่น ๆ
คุณไม่สามารถเอาชนะไวยากรณ์นี้เพื่อความสะดวก อนุญาตให้คุณคัดลอก rsync ซ้ำหรือสิ่งที่คุณต้องการโดยไม่ต้องยุ่งยากในการพิจารณาท่อที่ซับซ้อน ไวยากรณ์นี้มีความชัดเจนอย่างสังหรณ์ใจจะสามารถใช้งานได้ง่ายกว่าโดย Sys Admins ที่ติดตามคุณและไม่ใช้แมวอย่างไร้ประโยชน์
scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to
จากหน้า scp : -3
สำเนาระหว่างโฮสต์ระยะไกลสองเครื่องจะถูกถ่ายโอนผ่านโลคัลโฮสต์ หากไม่มีตัวเลือกนี้ข้อมูลจะถูกคัดลอกโดยตรงระหว่างโฮสต์ระยะไกลสองแห่ง โปรดทราบว่าตัวเลือกนี้จะปิดการใช้งานเครื่องวัดความคืบหน้า
ในตัวอย่างด้านล่าง
- เวิร์กสเตชันของคุณชื่อ MacBook-Pro
- Dev Jump Box ชื่อ devjumpserver
- Dev Application Server ชื่อ devapplicationserver
- อยู่ในโซน DNS ของ LAN ชื่อ. local
- QA Jump Box มีชื่อว่า qajumpserver
- QA Application Server มีชื่อว่า qaapplicationserver
- อยู่ในโซน LAN DNZ ชื่อ. local
- เราจะทำการทดสอบสำเนาของไฟล์ 670GB / etc / hosts ;-)
- สันนิษฐานว่าคุณมีการรับรองความถูกต้องของคีย์สาธารณะ SSH
นี่คือไฟล์ ~ / .ssh / config ที่ตั้งค่าการเข้าถึงโดยตรงจากเวิร์กสเตชันของคุณไปยังเซิร์ฟเวอร์แอปพลิเคชันผ่านการข้ามที่เหมาะสม (aka bastion เซิร์ฟเวอร์)
MacBook-Pro: ~ barrychapman $ cat ~ / .ssh / config
โฮสต์ *
ServerAliveInterval 60
โฮสต์ devapplicationsever
HostName devapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@devjumpserver.example.com -W% h:% p
ผู้ใช้ barrychapman
โฮสต์ qaapplicationserver
ชื่อโฮสต์ qaapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@qajumpserver.example.com -W% h:% p
ผู้ใช้ barrychapman
MacBook-Pro: ~ barrychapman $
การทดสอบการมีไฟล์บนเซิร์ฟเวอร์เป้าหมายจะไม่อยู่ที่นั่น
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
ls: ไม่สามารถเข้าถึง / tmp / hosts: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ฆ่าโดยสัญญาณ 1
MacBook-Pro: ~ barrychapman $
ทีนี้ลองคัดลอกไฟล์จากเซิร์ฟเวอร์ Dev Application ไปยัง QA Application ผ่านเวิร์กสเตชันของคุณ
MacBook-Pro: ~ barrychapman $ scp -3 devapplicationserver: / etc / โฮสต์ qaapplicationserver: / tmp /
ฆ่าโดยสัญญาณ 1
ฆ่าโดยสัญญาณ 1
MacBook-Pro: ~ barrychapman $
ทีนี้ลองตรวจสอบว่ามีไฟล์ที่ถูกคัดลอกไว้ใน QA Application Server หรือไม่ มันจะมีเวลานี้
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
/ tmp / hosts
ฆ่าโดยสัญญาณ 1
MacBook-Pro: ~ barrychapman $
บันทึก
เมื่อปิดการเชื่อมต่อ ProxyCommand คุณจะเห็นข้อความเตือน "ฆ่าโดยสัญญาณ 1" นี่คือ SSH ที่ขาดการเชื่อมต่อ ProxyCommand และไม่มีอะไรน่าตกใจ คุณสามารถกำจัดมันได้โดยเพิ่มLogLevel Quiet
ไปที่ bastion host config stanza ของคุณ