ฉันกำลังพยายามที่จะคัดลอกไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังอีกโดยตรงผ่านคอมพิวเตอร์ของฉัน
ฉันทำ
scp -r usrname@server1.com:~/data/* usrname@server2.com:~/data/
Password:
Host key verification failed.
lost connection
เป็นไปได้ไหม ฉันจะแก้ไขได้อย่างไร
ฉันกำลังพยายามที่จะคัดลอกไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังอีกโดยตรงผ่านคอมพิวเตอร์ของฉัน
ฉันทำ
scp -r usrname@server1.com:~/data/* usrname@server2.com:~/data/
Password:
Host key verification failed.
lost connection
เป็นไปได้ไหม ฉันจะแก้ไขได้อย่างไร
คำตอบ:
สิ่งที่ฉันใช้บ่อยเมื่อไม่มีการเชื่อมต่อระหว่างเซิร์ฟเวอร์สองเครื่อง
scp -3 user@server1:/path/to/file user@server2:/path/to/file
แหล่ง
-3 สำเนาระหว่างสองรีโมตโฮสต์ถูกถ่ายโอนผ่านโลคัลโฮสต์ หากไม่มีตัวเลือกนี้ข้อมูลจะถูกคัดลอกโดยตรงระหว่างโฮสต์ระยะไกลสองแห่ง โปรดทราบว่าตัวเลือกนี้จะปิดการใช้งานเครื่องวัดความคืบหน้า
สมมติว่าคุณมีการเชื่อมต่อที่ดีกับทั้งสองมันไม่ช้าเกินไป
-rธงหากคุณกำลังคัดลอกไดเรกทอรี
ใช่เป็นไปได้ แต่หาก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
server1ไปserver2โดยไม่ต้องให้รหัสผ่าน คุณอาจต้องตั้งค่า "ForwardAgent ใช่"
ประการแรกคุณต้องตรวจสอบฉันคุณสามารถ 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การคัดลอกไดเรกทอรี
ตรวจสอบว่า~/.ssh/known_hostsมีระเบียนที่เหมาะสมสำหรับเซิร์ฟเวอร์ทั้งสอง
ตรวจสอบด้วยว่า server1 มีการ~/.ssh/known_hostsบันทึกที่เหมาะสมสำหรับ server2
คุณสามารถใช้คำสั่งด้านล่างนี้เพื่อคัดลอกไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่น:
scp source_user@source_remote_host:/usr/bin/mysql_backup.sh \
target_user@target_remote_host:/var/tmp/