SCP ที่มีสองพอร์ตต่างกัน


15

ฉันจะใช้คำสั่ง scp เพื่อคัดลอกไฟล์ระหว่างเซิร์ฟเวอร์ระยะไกลสองเครื่องจากพีซีของฉันได้อย่างไร

รีโมตเซิร์ฟเวอร์ 1: IP = 67.12.21.133 & พอร์ต = 6774

รีโมตเซิร์ฟเวอร์ 2: IP = 67.129.242.40 & พอร์ต = 6774

scp -rp -P 6774 denny@67.12.21.133: /home/denny/testapp1.txt denny@67.129.242.40:

มันให้ข้อผิดพลาดหลังจากให้รหัสผ่านของ 67.12.21.133

ssh: เชื่อมต่อกับโฮสต์ 67.129.242.40 พอร์ต 22: การเชื่อมต่อถูกปฏิเสธ

ขาดการเชื่อมต่อ


ฉันเพิ่งทดสอบสิ่งนั้นด้วย แต่ใช้ได้กับโฮสต์แรกเท่านั้น อันที่สองล็อคไว้ที่พอร์ต 22
gajdipajti

คำตอบ:


19

คุณสามารถใช้~/.ssh/configเพื่อระบุพอร์ตที่จะใช้สำหรับโฮสต์ (และสำหรับการตั้งค่าสิ่งที่ดีอื่น ๆ อีกมากมาย; ตรวจสอบหน้าคนman ssh_config):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

เมื่อทำสิ่งนี้คุณจะต้องใช้ตัวเลือก-3เพื่อ scp ซึ่งคัดลอกไฟล์ผ่านเครื่องท้องถิ่นของคุณ มิฉะนั้น scp จะออกคำสั่ง scp ผ่าน ssh บนโฮสต์แรกดังนั้นจึงรันได้จริง

 ssh -p 6774 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:

จากนั้นจึงใช้ ~ / .ssh / config ของโฮสต์ระยะไกลตัวแรก (67.12.21.133) แทนโลคัลโฮสต์ของคุณ

เมื่อคุณติดตั้ง~/.ssh/configอย่างถูกต้องสิ่งนี้จะทำงาน:

scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

แน่นอนคุณสามารถคัดลอกเนื้อหาของไฟล์ ~ / .ssh / config ไปยังโฮสต์ระยะไกลเครื่องแรกของคุณจากนั้นคุณสามารถใช้ scp โดยไม่มี-3ตัวเลือกซึ่งอาจทำให้การถ่ายโอนเร็วขึ้น

หรือคุณสามารถใช้เคล็ดลับที่ scp ใช้และใช้บรรทัดคำสั่งดังกล่าว:

ssh -p 6774 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:

(โปรดสังเกตกรณีที่แตกต่างกันของพารามิเตอร์พอร์ตสำหรับ ssh และ scp: ssh -p 6774vs. scp -P 6774)

PS: ฉันได้รับข้อมูลจาก OpenSSH bugzilla ที่ฉันป้อนสิ่งนี้เป็นข้อผิดพลาด: https://bugzilla.mindrot.org/show_bug.cgi?id=2020


'-3' ดูเหมือนจะไม่ใช่ตัวเลือกที่ถูกต้อง - ฉันเพิ่งได้รับ "scp: ตัวเลือกที่ผิดกฎหมาย - 3"
เศรษฐี Sedman

8

ฉันไม่พบวิธีแก้ปัญหาที่ง่าย แต่คุณสามารถลองใช้ sshfs ด้วยวิธีต่อไปนี้:

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

วิธีอื่นอาจใช้ ssh (จริง ๆ แล้วไม่ประสบความสำเร็จทดสอบ):

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

ขณะนี้ฉันไม่พบวิธีที่ถูกต้องในการป้อนรหัสผ่านที่สอง มันถามบางครั้งสำหรับรหัสผ่านสองตัว แต่ไม่ยอมรับใครเลย บางทีถ้าคุณแลกเปลี่ยนคีย์ ssh ระหว่างโฮสต์ที่ใช้งานได้ เพราะคุณไม่ต้องการรหัสผ่าน

ฉันหวังว่านี่จะช่วยได้? โทมัส


6

ตามหน้านี้ในบล็อก Linux Academy คุณเพียงแค่ต้องใช้-P 6774ตัวเลือกก่อนเส้นทางระยะไกลที่สองเช่นกัน:

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

การใช้-Pแฟล็กแต่ละครั้งจะใช้กับตำแหน่งถัดไปบนบรรทัดคำสั่งเท่านั้นไม่ใช่ทั้งคำสั่ง ตำแหน่งใด ๆ ที่ไม่ได้-Pอยู่ระหว่างมันกับพา ธ ก่อนหน้า (หรือชื่อคำสั่ง [ scp]) จะใช้ค่าเริ่มต้นเป็นพอร์ตมาตรฐาน (22)


มันไม่ทำงานสำหรับฉัน มันน่าเสียดายเพราะนี่ดูเหมือนจะเป็นทางออกที่ดีที่สุด ลิงก์เสีย
david.perez

1
เพิ่งอัปเดตลิงก์ (แม้ว่าฉันลืมล็อกอินก่อน ... ) Linux Academy ตัดสินใจปรับโครงสร้างเว็บไซต์ของตนเอง หวังว่าจะช่วยได้บ้าง!
Dan Hunsaker

ถ้าเพียงแค่นี้ใช้งานได้ -P: No such file or directoryแต่ฉันได้รับ
Tom

@Tom - คุณใช้ระบบอะไรอยู่ คุณอาจมีการใช้งานที่แตกต่างจากscpที่อ้างถึงที่นี่
Dan Hunsaker

นี่คือ Ubuntu 17.04
Tom

-2

หากคุณต้องการถ่ายโอนข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นให้ใช้คำสั่ง SCP ให้ทำเช่นนั้น

เพียงกดCtrl+ Alt+ Tบนแป้นพิมพ์เพื่อเปิด Terminal เมื่อเปิดขึ้นให้เรียกใช้คำสั่งด้านล่าง

scp -pr root@192.168.1.2:/path/to/files /destination/path

หมายเหตุ: พารามิเตอร์ -P สามารถใช้ได้หากคุณต้องการพูดถึงหมายเลขพอร์ต


2
คุณยังไม่ได้อ่านคำถาม เขามีปัญหากับพอร์ต คุณสามารถตั้งค่าพอร์ตแรก แต่น๊อตที่สองที่มีพารามิเตอร์ -P
gajdipajti

@gajdipajti ฉันไม่ได้ระบุพอร์ตในคำตอบของฉันและเพิ่มเป็นบันทึกย่อ ผู้ใช้ยังระบุด้วยว่าเขากำลังใช้พอร์ตเดียวกัน ดูบรรทัด Q. 2nd & 3rd :)
Mitch

2
แต่มันไม่ทำงานอย่างนั้นคุณจะตั้งค่าเป็นครั้งแรกด้วย -P แต่วินาทีจะยังคงอยู่ที่ 22 เพียงลองดู ฉันกำลังทำการทดสอบในขณะนี้ แต่ก็ยังไม่มีวิธีแก้ปัญหาที่ทำงานได้
gajdipajti

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