วิธีเปิดใช้งานการเติมข้อความอัตโนมัติสำหรับเส้นทางระยะไกลเมื่อใช้ scp?


37

ฉันรีโมตคัดลอกไฟล์ไปยังแล็ปท็อปของฉันโดยใช้:

scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here

ฉันต้องการที่จะเติมข้อความอัตโนมัติเส้นทางระยะไกลโดยการกดปุ่มแท็บ


1
มันเปิดใช้งานrsyncแล้วซึ่งในความคิดของฉันนั้นเหนือกว่าscp
Marco Ceppi

3
zshมันเปิดใช้งานโดยค่าเริ่มต้นใน
Stéphane Gimenez

3
มันเปิดใช้งานscpด้วยและอย่างน้อยก็ทำงานได้ที่นี่ คุณต้องเพิ่ม ssh-key ไปยัง ssh-agent แล้ว
enzotib

คำตอบ:


23

ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้การเติมข้อความอัตโนมัติแฟนซี ในการกระจายจำนวนมากนี้หมายถึงคุณความต้องการที่จะมี~/.bashrc. /etc/bash_completion

คุณจะต้องมีการตรวจสอบการตั้งค่า passwordless ssh-agentคือกุญแจที่โหลดแล้วใน

การสร้างการเชื่อมต่อ SSH นั้นช้าดังนั้นคุณสามารถเร่งความเร็วให้สำเร็จได้อย่างสมบูรณ์โดยการสร้างการเชื่อมต่อหนึ่งครั้งและทั้งหมดและใช้การเชื่อมต่อนั้นหลังจากนั้น วิธีที่ค่อนข้างซับซ้อนในการทำเช่นนั้นคือการเปิดการเชื่อมต่อ SSH หลักด้วยssh -N -M target-hostหลังจากตั้งค่าการเชื่อมต่อ master-slave ใน~/.ssh/config; เห็นหลาย ssh เซสชันในคำสั่งเดียวสำหรับคำแนะนำ (คุณต้องการControlMasterและControlPathตัวเลือก)

วิธีง่าย ๆ คือการเมานต์ระบบไฟล์ระยะไกลผ่านSSHFSและใช้cpกับการทำให้เชลล์สมบูรณ์

mkdir ~/remote
sshfs USER@192.168.178.32:/home/USER ~/remote
cp -p someFile ~/remote/put/it/some/where/oh/damn/you/here

ดูเหมือนว่ามีบางสิ่งบางอย่างในแหล่งที่มา/etc/bash_completion ~/.bash_completionฉันต้องการที่จะมีคุณสมบัตินี้ในเซิร์ฟเวอร์ระยะไกลที่ฉันไม่สามารถเขียน/etc/และไม่มี/etc/bash_completion(แม้ว่าจะมี) /etc/bash_completion.d/มีรุ่นที่ปลอดภัยที่จะเรียกใช้จากไดเรกทอรีภายในบ้านของฉันหรือไม่มีการอ้างอิงอย่างน้อยหนึ่งรายการ ~ / .bash_completion ดังนั้นฉันกลัวว่าจะมีมากกว่าฉันหายไปและอาจมีวงจรวนหรือสิ่งอื่นที่อาจทำให้เกิดข้อผิดพลาด
redbmk

7

สิ่งที่ฉันต้องทำคือการเพิ่มกุญแจสาธารณะของฉันไปยังเครื่องระยะไกล:

cat ~/.ssh/id_rsa.pub | ssh USER@192.168.178.32 "cat - >> ~/.ssh/authorized_keys"

และตอนนี้scpแท็บเสร็จสมบูรณ์

ดูที่นี่หากคุณต้องการตั้งค่ากุญแจของคุณก่อน


6
นี่คือสิ่งที่ssh-copy-idมีไว้รวมถึงจะจัดการสิทธิ์การใช้ไฟล์ให้คุณ
เกล็นแจ็คแมน

2

คุณสามารถเปลี่ยนเป็น lftp แทนการใช้ scp มันช่วยให้คุณมีอินเตอร์เฟซที่สอดคล้องกันที่ดีสำหรับการถ่ายโอนไฟล์ผ่าน ftp, sftp และ ssh รวมถึงการเติมข้อความอัตโนมัติที่คุณกำลังมองหาและอื่น ๆ (เช่นสัญลักษณ์แทน)

lftp fish: // user @ machine

เปิดการเชื่อมต่อผ่าน ssh เหมือนกับที่คุณทำข้างต้นด้วย scp เครื่องหลายเครื่องรองรับ sftp: // ด้วยซึ่งก็ดีกว่าในประสบการณ์ของฉัน


0

เช่นเดียวกับ @Giles ได้กล่าวว่าตรวจสอบให้แน่ใจว่าคุณมีการตั้งค่าอัตโนมัติสมบูรณ์อย่างถูกต้องมีคุณได้คีย์ ssh บนเครื่อง

การเพิ่มการกำหนดค่านี้ให้กับฉัน~/.ssh/configทำให้ความเร็วแตกต่างกันมาก

Host *
 ControlMaster auto
 ControlPath ~/.ssh/master-socket/%r@%h:%p
 ControlPersist 10s

สิ่งนี้จะสร้างการเชื่อมต่อหลักสำหรับแต่ละโฮสต์

การคงอยู่ของยุค 10 จะให้เวลาคุณดูไดเรกทอรีก่อนที่การเชื่อมต่อจะถูกปิดโดยอัตโนมัติ

คุณจะต้องสร้างการเชื่อมต่อใหม่และจะทำให้แท็บของคุณทำงานช้าลง

ตัวอย่าง

~$ scp mymachine:~/pa TAB

path/ palace/ pandas/ porn/

~$ scp mymachine:~/path/to TAB

~$ scp mymachine:~/path/to/file TAB

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