ฉันจะใช้ keyfile เพื่อถ่ายโอนข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นได้อย่างไร


25

ฉันลาดเท scp เซิร์ฟเวอร์อื่นใช้การเชื่อมต่อ SFTP เท่านั้น

ขณะนี้ฉันกำลังพยายามทำ

sftp jay@server.name.com:/files> put -r ~/

-i keynameillegal option -- iไม่ทำงานแก้ไขเพียงกับ

คำตอบ:


34

ลอง:

sftp -o "IdentityFile=keyname" jay@server.name.com

คุณสามารถใช้ในการส่งผ่านตัวเลือกที่ถูกต้องในการใด-o~/.ssh/config


ถูกจับมัน ขอบคุณ! ฉันจะเก็บไว้ที่นั่นตามปกติได้อย่างไร
Jay

ฉันไม่รู้ว่าคุณหมายถึงอะไรโดย "เก็บไว้ที่นั่นตามปกติ" หากคุณหมายความว่าคุณต้องการให้IdentityFileตัวเลือกได้รับโดยอัตโนมัติให้ตรวจสอบคำตอบของUtahJarheadเกี่ยวกับการใส่ไว้ใน~/.ssh/config
Celada

4

คัดลอกกุญแจสาธารณะของคุณไปยังเซิร์ฟเวอร์โดยใช้วิธีการดั้งเดิม

บนเซิร์ฟเวอร์:

  • สร้าง.sshถ้าไม่มี:
[[! -d "$ {HOME} /. ssh"]] && mkdir -p "$ {HOME} /. ssh"
  • ใช้พับลิกคีย์:
cat /path/to/public_key.pub >> "$ {HOME} /. ssh / authorized_keys"
  • ตั้งค่าการอนุญาตที่เหมาะสม OpenSSH เป็นเรื่องเกี่ยวกับการอนุญาตของไฟล์ที่มีปัญหา:
chmod go-rwx "$ {HOME}" "$ {HOME} /. ssh / authorized_keys"

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

echo "ใส่ filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile = / พา ธ / ไปยัง / private_key user @ host

หรืออย่าลังเลที่จะสร้างไฟล์ ~ / .ssh / config ในรูปแบบ ssh_config เพื่อให้คุณสามารถพิมพ์ได้ในอนาคต:

sftp -b /tmp/batchfile.txt โฮสต์

ตัวอย่างเนื้อหาของ ~/.ssh/config

โฮสต์ the_hostname
    ชื่อผู้ใช้
    IdentityFile / path / to / private_key

ไม่ลองอันนี้ในแบทช์ถัดไปวิธีแก้ปัญหาข้างต้นทำกลอุบาย
Jay

1

หากคุณต้องการติดตั้ง sftp บน ec2 บทความนี้อาจช่วยคุณได้


ขออภัยมันไม่ได้จริงๆ
Jay

1
"คำตอบ" นี้ไม่มีอะไรเกี่ยวข้องกับคำถาม ที่เลวร้ายยิ่งมันเป็นเพียงลิงค์ไปยังหน้าหนึ่งที่จะหายไปสักวันหนึ่ง
John Mayor

0

ฉันได้รับปัญหานี้เมื่อเร็ว ๆ นี้และสิ่งที่ได้ผลสำหรับฉันในการตั้งค่าเทอร์มินัลเริ่มต้นสำหรับ macbook ของฉันมีดังต่อไปนี้

sftp -i ./privateFilePath.key username@url.com

หมายเหตุคุณอาจได้รับการเลื่อนตำแหน่งโดยไฟล์ส่วนตัวที่ไม่มีการป้องกัน! ข้อความในกรณีที่คุณต้องเรียกใช้คำสั่งนี้เพื่อให้แน่ใจว่าผู้อื่นไม่สามารถเข้าถึงคีย์ส่วนตัวของคุณได้

chmod 600 privateFilePath.key 

ในบางกรณีคุณต้องใส่sudoไว้ข้างหน้าคำสั่งนี่ก็ต่อเมื่อคุณกำลังทำงานในไดเรกทอรีที่ได้รับการป้องกันโดยผู้ดูแลระบบ

ฉันหวังว่าจะเป็นประโยชน์ :)


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