SCP จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นหรือไม่


34

ฉันกำลังพยายามที่จะคัดลอกไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังอีกโดยตรงผ่านคอมพิวเตอร์ของฉัน

ฉันทำ

scp -r usrname@server1.com:~/data/* usrname@server2.com:~/data/
Password: 
Host key verification failed.
lost connection

เป็นไปได้ไหม ฉันจะแก้ไขได้อย่างไร


คุณสามารถโพสต์ผลลัพธ์ของ command- scp -r -v usrname@server1.com ต่อไปนี้ได้ที่: ~ / data / * usrname@server2.com: ~ / data /
pragmatic

คำตอบ:


55

สิ่งที่ฉันใช้บ่อยเมื่อไม่มีการเชื่อมต่อระหว่างเซิร์ฟเวอร์สองเครื่อง

scp -3 user@server1:/path/to/file user@server2:/path/to/file

แหล่ง

-3 สำเนาระหว่างสองรีโมตโฮสต์ถูกถ่ายโอนผ่านโลคัลโฮสต์ หากไม่มีตัวเลือกนี้ข้อมูลจะถูกคัดลอกโดยตรงระหว่างโฮสต์ระยะไกลสองแห่ง โปรดทราบว่าตัวเลือกนี้จะปิดการใช้งานเครื่องวัดความคืบหน้า

สมมติว่าคุณมีการเชื่อมต่อที่ดีกับทั้งสองมันไม่ช้าเกินไป


นอกจากนี้หากคุณต้องการใช้พอร์ตพิเศษบนเซิร์ฟเวอร์ทั้งสอง: superuser.com/questions/686394/…
Pit

อย่าลืมเพิ่ม-rธงหากคุณกำลังคัดลอกไดเรกทอรี
เทย์เลอร์เอ็ดมิสตัน

16

ใช่เป็นไปได้ แต่หากserver1.comสามารถเข้าถึงได้server2.comโดยใช้ชื่อนั้น หากไม่ใช่คุณอาจได้รับข้อความ:ssh: connect to host server2 port 22: Connection refused

manหน้าscpอย่างชัดเจนระบุว่าชุดมันระหว่างโฮสต์บนเครือข่ายและที่:

อนุญาตให้คัดลอกระหว่างโฮสต์ระยะไกลสองเครื่อง

สิ่งที่คุณควรทำ (ครั้งเดียว) เป็นsshไปusername@server1.comและจากที่นั่นไปssh username@server2.comตอบคำถามของแท้ที่คุณจะได้รับด้วยใช่เพื่อกำจัดข้อความยืนยันคีย์โฮสต์ขณะดำเนินการscp

คุณอาจต้องเปิดใช้งานตัวแทนการส่งต่อด้วย:

scp -o "ForwardAgent yes" -r usrname@server1.com:~/data/* usrname@server2.com:~/data/

แต่ให้แน่ใจว่าคุณตระหนักถึงอันตรายที่ ( man ssh_config)


ฉันเพิ่งจะsshจากserver1.comไปserver2.comและแน่นอนฉันตอบคำถามและประสบความสำเร็จ จากนั้นฉันกลับไปที่เครื่องคอมพิวเตอร์ของฉันทำมันอีกครั้งแล้วรับserver2.comรหัสผ่านของพรอมต์ แต่มันก็ล้มเหลวด้วย:Permission denied (publickey,keyboard-interactive). lost connection
การพนัน Sibbs

1
@SibbsGambling ฉันคิดว่าสิ่งนี้ขึ้นอยู่กับการส่งต่อคีย์ส่วนตัวของคุณ คุณสามารถเข้าสู่เซิร์ฟเวอร์ทั้งสองโดยไม่ต้องใส่รหัสผ่านได้หรือไม่? คุณสามารถเข้าสู่ระบบจากserver1ไปserver2โดยไม่ต้องให้รหัสผ่าน คุณอาจต้องตั้งค่า "ForwardAgent ใช่"
Anthon

1

ประการแรกคุณต้องตรวจสอบฉันคุณสามารถ ssh ไปยัง server2 โดยไม่มีข้อผิดพลาดใด ๆ ถ้าคุณได้รับข้อผิดพลาดเดียวกันแล้วโปรดเปิดไฟล์~/.ssh/known_hostsและค้นหาคีย์ server2 และลบมัน

จากนั้นตรวจสอบว่าคุณสามารถ ping เซิร์ฟเวอร์ด้วยชื่อโฮสต์หรือไม่

ถ้าไม่ใช่โปรดแก้ไขทั้งไฟล์โฮสต์เซิร์ฟเวอร์ตามที่ระบุไว้ด้านล่าง

 #vi /etc/hosts  
 server1 192.186.x.x  
 server2 192.186.x.xx   
 :wq   ---> to save  

หลังจากคุณทำแผ่นซีดีนี้ไปยังตำแหน่งของไฟล์ที่คุณต้องการคัดลอกไปยังเซิร์ฟเวอร์ 2

scp file_name user@server2:/path_to_the_directory ---> คุณสามารถใช้ IP แทนชื่อโฮสต์ที่คุณสามารถพูดถึง-Rการคัดลอกไดเรกทอรี


0

ตรวจสอบว่า~/.ssh/known_hostsมีระเบียนที่เหมาะสมสำหรับเซิร์ฟเวอร์ทั้งสอง

ตรวจสอบด้วยว่า server1 มีการ~/.ssh/known_hostsบันทึกที่เหมาะสมสำหรับ server2


-2

คุณสามารถใช้คำสั่งด้านล่างนี้เพื่อคัดลอกไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่น:

scp source_user@source_remote_host:/usr/bin/mysql_backup.sh \
         target_user@target_remote_host:/var/tmp/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.