Verwenden Sie SCP oder SFTP mit meiner SSH-Konfigurationsdatei?


44

Vielleicht scheitert mein Google-Foo hier ... Ich möchte eine Verbindung herstellen und eine MySQL-Dump-Datei über ein Terminal mit SFTP oder SCP auf meinen Remote-Server mit meiner SSH-Konfigurationsdatei hochladen. Laut der Dokumentation, die ich gefunden habe, sollte ich dazu in der Lage sein:

sftp -F db.sql.gz webost@staging2.example.com /tmp

Ich habe auch den Alias ​​in meiner Konfiguration müde:

sftp -F db.sql.gz myalias /tmp

Wenn ich die zwei oben mache, bekomme ich einfach einen Ausdruck von möglichen Befehlen, da -Fich einer von ihnen bin.

Ich kann bereits eine Verbindung über ssh herstellen, indem ich die Verknüpfung in meiner lokalen Konfiguration verwende, also weiß ich, dass dies funktioniert:

ssh myalias

** Hinweis: Ich verbinde mich mit einem privaten / öffentlichen Schlüsselpaar, sodass ich kein Passwort eingeben muss. Dem Schlüsselpaar ist zwar eine Passphrase zugeordnet, aber OS X-Schlüsselbund hat sich beim ersten Herstellen einer Verbindung daran erinnert.

Ich bin mir also nicht sicher, was ich falsch mache.

Antworten:


46
  1. Aus dem Hilfetext: " ... [-F ssh_config] ..."

    Erwartet -Fdemnach ein Argument: Pfad zu einer OpenSSH-Konfigurationsdatei ~/.ssh/configoder ähnliches. Aber Sie geben ihm stattdessen einen gezippten SQL-Speicherauszug.

    Da plain ssh myaliasbereits funktioniert, brauchen Sie hier nicht einmal die -FOption. sftp myaliasWürde mich einfach mit dem Server verbinden.

  2. Der OpenSSH- sftpClient unterstützt jedoch nicht das Hochladen von Dateien, wie Sie es versuchen. Es kann nur Dateien herunterladen (mithilfe der Syntax host:path) oder im interaktiven Modus arbeiten. Zum Hochladen müssen Sie entweder den interaktiven Modus verwenden ...

    $ sftp myalias
    sftp> cd /tmp
    sftp> put db.sql.gz
    

    ... oder das scpTool:

    scp db.sql.gz myalias:/tmp
    

    oder

    scp db.sql.gz webost@staging2.example.com:/tmp
    

(sftp hat einen Batch-Modus, in dem es Befehle aus einer Datei lesen kann -b, aber es ist einfacher, sie scpfür einzelne Uploads zu verwenden.)

Es gibt auch andere SFTP-Clients - LFTP eignet sich gut für die interaktive Verwendung, während sich Locken leichter automatisieren lässt. Für Sicherungen und ähnliches können Sie auch rsync verwenden (das sein eigenes Protokoll ausführt, sich aber immer noch in SSH befindet).


wow das ist perfekt, hat super funktioniert! Ich mache mich gerade mit Terminal vertraut, damit dies in Zukunft wirklich nützlich sein wird.
Danny Englander

0

Problem durch ForwardAgent-Konfiguration (siehe unten)

Host dockervm
   HostName x.x.x.x
   User root
   Preferredauthentications publickey
   ForwardAgent yes

In meinem Fall lag es daran, dass der 'ForwardAgent' in der ssh-Konfiguration dazu führte, dass der scp hängen blieb. Sobald ich es auskommentiert habe, hat es für mich funktioniert.

Sie können auch eine Kopie der Datei mit der Zeile ForwardAgent als Kommentar erstellen und scp -F verwenden, damit sie funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.