Ich habe eine Datei per Fernzugriff auf meinen Laptop kopiert:
scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here
Ich möchte den Remote-Pfad automatisch vervollständigen können, indem ich die Tabulatortaste drücke.
bash
ssh
autocomplete
k0pernikus
quelle
quelle
rsync
, was meiner Meinung nach weit überlegen istscp
zsh
.scp
, zumindest funktioniert es hier. Sie benötigen einen SSH-Schlüssel, der bereits zu einem SSH-Agenten hinzugefügt wurde.Antworten:
Stellen Sie sicher, dass Sie die ausgefallene Autovervollständigung aktiviert haben. Bei vielen Distributionen bedeutet dies, dass Sie Ihre
~/.bashrc
Anforderungen enthalten müssen. /etc/bash_completion
.Sie müssen die kennwortlose Authentifizierung eingerichtet haben, dh mit einem Schlüssel, der bereits geladen ist
ssh-agent
.Das Herstellen einer SSH-Verbindung ist langsam, sodass Sie die Fertigstellung erheblich beschleunigen können, indem Sie ein für alle Mal eine Verbindung herstellen und diese Verbindung anschließend verwenden. Der relativ komplizierte Weg, dies zu tun, besteht darin, eine Master-SSH-Verbindung zu öffnen,
ssh -N -M target-host
nachdem Master-Slave-Verbindungen in eingerichtet wurden~/.ssh/config
. Anweisungen finden Sie unter Mehrere ssh-Sitzungen in einem Befehl (Sie benötigen die OptionenControlMaster
undControlPath
).Die einfache Methode besteht darin, das entfernte Dateisystem über SSHFS bereitzustellen und
cp
mit normaler Shell-Vervollständigung zu verwenden.quelle
/etc/bash_completion
der Quelle befindet~/.bash_completion
. Ich möchte diese Funktion auf einem Remote-Server haben, auf den ich nicht schreiben kann/etc/
und auf dem es keine gibt/etc/bash_completion
(obwohl es eine gibt)/etc/bash_completion.d/
. Gibt es eine Version, die sicher von meinem Home-Verzeichnis aus ausgeführt werden kann? Es gibt mindestens einen Verweis auf ~ / .bash_completion also ich fürchte, es fehlt mehr und es könnte eine zyklische Schleife oder etwas anderes geben, das Fehler verursachen könnte.Alles, was ich tun musste, war, meinen öffentlichen Schlüssel zur Remote-Maschine hinzuzufügen:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"
Und jetzt
scp
Tab vervollständigt.Schauen Sie hier, wenn Sie zuerst Ihre Schlüssel einrichten müssen.
quelle
ssh-copy-id
ist, und es wird die Dateiberechtigungen für Sie behandeln.Sie könnten zu lftp wechseln, anstatt scp zu verwenden. Es bietet Ihnen eine schöne konsistente Schnittstelle für die Dateiübertragung über FTP, SFTP und SSH, einschließlich der von Ihnen gesuchten automatischen Vervollständigung und mehr (dh Platzhalter).
öffnet eine Verbindung über ssh wie oben mit scp. Viele Maschinen unterstützen auch sftp: //, was meiner Erfahrung nach sogar noch schöner ist.
quelle
Wie @Giles gesagt hat , stellen Sie sicher, dass Sie die automatische Vervollständigung richtig eingerichtet haben und Ihren SSH- Schlüssel auf dem Computer haben.
Das Hinzufügen dieser Konfiguration zu meiner
~/.ssh/config
machte einen großen Unterschied in der Geschwindigkeit.Dadurch wird für jeden Host eine Master-Verbindung erstellt.
Wenn die 10s bestehen bleiben, haben Sie etwas Zeit, um das Verzeichnis zu sehen, bevor die Verbindung automatisch geschlossen wird.
Ohne das Bestehenbleiben müssen Sie eine Verbindung neu erstellen, und die Fertigstellung der Registerkarte wird verlangsamt.
Beispiel
~$ scp mymachine:~/pa
TAB~$ scp mymachine:~/path/to
TAB~$ scp mymachine:~/path/to/file
TABquelle