ฉันมีหนึ่งใหญ่ไฟล์บนเซิร์ฟเวอร์one
และฉันต้องการที่จะคัดลอกไปยังเซิร์ฟเวอร์โดยใช้two
scp
ฉันมีการตั้งค่าคีย์อย่างถูกต้องและฉันสามารถ ssh / scp ไปยังเซิร์ฟเวอร์ทั้งสองจากเดสก์ท็อปของฉัน
ไฟล์ที่ฉันต้องการคัดลอกนั้นใหญ่กว่าพื้นที่ว่างบนฮาร์ดดิสก์ของเวิร์กสเตชันของฉันดังนั้นฉันจึงต้องการ:
scp one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz
แต่ฉันได้:
ssh: Could not resolve hostname one: Name or service not known
เราไม่มี DNS ที่นี่ (อย่าถามฉันว่าทำไม) ดังนั้นฉันจึงมีสิ่งนี้ใน ~ / .ssh / config:
Host one
Hostname <IP address of server one>
User jspurny
Host two
Hostname <IP address of server two>
User jspurny
ถ้าฉันลองด้วยไฟล์ที่มีขนาดเล็กกว่าและถ่ายโอนจากone
ไปยังเวิร์กสเตชันของฉันและไปยังtwo
ก็ใช้งานได้:
scp one:/opt/smallerfile.tar.gz .
scp smallerfile.tar.gz two:/opt/
เมื่อใช้ที่อยู่ IP โดยตรงตามที่แนะนำในความคิดเห็นฉันได้รับ:
$ scp jspurny@<one's IP>:bigfile.tar.gz jspurny@<two's ip>:bigfile.tar.gz
Host key verification failed.
lost connection
ไม่ใช่ปัญหา:
ขนาดไม่ใช่ปัญหาที่นี่ - เป็นเพียง "ทริกเกอร์" สำหรับปัญหานี้เนื่องจากไม่มีวิธีการจัดเก็บbigfile.tar.gz
บนเวิร์กสเตชันของฉัน ปัญหาเกิดขึ้นโดยไม่คำนึงถึงขนาดของไฟล์
คำถาม:
ทำไมคำสั่ง:
scp oneremote:file secondremote:file
โยนข้อผิดพลาดโดยไม่คำนึงว่าใช้.ssh/config
นามแฝงหรือใช้ที่อยู่ IP โดยตรงหรือไม่
แก้ไขแล้ว - เรียงลำดับ - ยังคงมองหาคำอธิบาย - ฉันแบ่งไฟล์ย่อยเป็นไฟล์ขนาดเล็กลงแล้วถ่ายโอนทีละไฟล์ผ่านเวิร์กสเตชันของฉัน ฉันยังสงสัยว่าทำไมมันไม่ทำงาน ดังนั้นฉันจะยังคงซาบซึ้งกับคำอธิบายบางอย่างที่ผิด ..
พบสาเหตุที่ทำให้มันล้มเหลว:ดูเหมือนว่าฉันเป็นคนโง่ ฉันคิดว่าคำสั่ง
scp one:file two:file
กำลังสร้างการเชื่อมต่อที่สองไปยังเซิร์ฟเวอร์แต่ละเครื่องจากนั้นรับข้อมูลจากหนึ่งและส่งไปยังสองทันทีและทำหน้าที่เหมือนรีเลย์
นี้ไม่ชัดเจนกรณีเพราะง่าย-v
ตัวเลือกเปิดเผยว่าในความเป็นจริงเพียงแค่เชื่อมต่อกับหนึ่งและจากที่หนึ่งก็พยายามที่จะเชื่อมต่อกับทั้งสอง ซึ่งเห็นได้ชัดว่าเป็นไปไม่ได้เนื่องจากเซิร์ฟเวอร์หนึ่งไม่ควรจะเชื่อมต่อกับทั้งสอง