2016-04-01 14 views
1

Ich habe einen headless Dateiserver, auf dem ich Downloads und Medien speichern und verwalten, aber gelegentlich muss ich kleine Dateien zurück auf meinen Computer übertragen (Mac, mit Bash-Shell). Das Problem besteht darin, dass einige Dateien benutzerfreundlichere Namen haben und häufig Leerzeichen enthalten sind. Sie sind in der Dateiverzeichnishierarchie verborgen, die ich auf meinem Server eingerichtet habe.SCP-Datei von SSH-Sitzung zu localhost

Wenn ich scp von meinem lokalen Computer verwende, habe ich keine Tab-Vervollständigung, also muss ich den gesamten Pfad und Namen mit Leerzeichen Escape manuell eingeben. Wenn ich ssh in den Server zunächst der Befehl:

scp /home/me/files/file\ name\ with\ spaces.png [email protected]:/Users/Me/MyDirectory 

mit dem Fehler fehlschlägt „Zugriff verweigert, versuchen Sie es erneut“, obwohl ich richtig meinem lokalen Rechner Benutzerkennwort bin eingeben.

Ich habe ein wenig von sftp gelernt, seit ich gesagt habe, dass ein besseres Werkzeug für die Dateiübertragung sein kann. Das Dienstprogramm scheint jedoch veraltet zu sein, und ich habe immer noch keine Tabulatorvervollständigung, nachdem ich eine Verbindung zum Server hergestellt habe (in meinem Terminal, wenn ich Tab drücke, erhalte ich nur ein Tab-Zeichen).

Meine Frage ist das: Was kann ich tun, um die Tab-Vervollständigung während der Verwendung von scp von meinem Mac zu ermöglichen? Oder verwende ich falsche Syntax für scp in einer ssh Sitzung, und gibt es etwas in diesem Befehl, den ich beheben sollte? Oder gibt es ein (besseres? Neueres?) Tool als sftp, das die Tab-Vervollständigung auf einem Server anbietet?

Schließlich, wenn keines dieser Probleme einfache Lösungen hat, gibt es ein Paket, das ich installieren könnte (z. B. ein Completion-Paket von Homebrew o.ä.), das einen besseren Tab-Abschluss mit einem dieser Befehle ermöglicht?

+0

Sie mögen 3D-Druck? Check out [3D Druck auf SE] (http://3dprinting.stackexchange.com/): D –

+0

@MattClark Ja, ich habe letztes Jahr einen RepRap i3 gebaut. Danke für den Tipp, ich werde es auf jeden Fall überprüfen! – APaul

Antwort

2

Sieht für mich wie das ist ein paar falsche scp ing.

Dies ist das Format des Befehls

scp ./localFile.txt [email protected]:/remoteFile.txt 

Sie waren so nah, aber Sie haben localhost Satz, wo Sie Ihre remoteHost haben sollte.

localhost ist der Name, der an der Maschine löst, die Sie sich gerade befinden - so in Ihren Workflow, Sie sind ssh ing zu einer Maschine, und dann zu scp versuchen, die Sie bereits in ssh d sind auf der gleichen Maschine einreichen.

Sie müssen die IP-Adresse oder den physischen Hostnamen des Computers ermitteln, mit dem Sie eine Verbindung herstellen möchten, und diesen stattdessen verwenden.

scp ./localFile.txt [email protected]:/remoteFile.txt 
# where 192.168.1.100 would be the IP of your Mac 

ich den Grund gehe davon aus Sie der Erlaubnis verweigert bekommen wurden, war, weil Sie Ihre die Anmeldeinformationen für Sie mac verwendet hat, aber unwissentlich versuchen, wieder zu Ihrer kopflosen Maschine einzuloggen.

+0

Ah, ich fühle mich jetzt albern wegen 'localhost'. Aber wenn ich es nach dem Auffinden meiner lokalen IP an 'Me @ 192.168.1.xxx' repariere, bekomme ich den Fehler' ssh: connect to host 192.168.1.xxx Port 22: Connection refused'. Ich habe 'sshd' nicht auf meinem Mac ausgeführt (nachdem ich' ps' verwendet habe, um danach zu suchen), aber ich bin mir nicht sicher, wo ich von hier aus fortfahren soll ... – APaul

+1

Klingt, als ob Sie 'sshd' auf Ihrem Mac installieren sollten: p –

+1

^Ha. Das würde es tun. Für die Nachwelt muss "sshd" nicht installiert werden: auf einem Mac müssen Sie Remote Logins nur in den Systemeinstellungen> Freigabe aktivieren. – APaul