SCP oder SFTP mit meiner SSH-Konfigurationsdatei verwenden?

SCP oder SFTP mit meiner SSH-Konfigurationsdatei verwenden?

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

sftp -F db.sql.gz [email protected] /tmp

Ich habe auch den Alias ​​in meiner Konfiguration ausprobiert:

sftp -F db.sql.gz myalias /tmp

Wenn ich die beiden oben genannten Schritte ausführe, erhalte ich einfach einen Ausdruck der möglichen Befehle, -Fwobei es sich um einen davon handelt.

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

ssh myalias

Notiz: Ich verbinde mich mit einem privaten/öffentlichen Schlüsselpaar, sodass ich nie ein Passwort eingeben muss. Dem Schlüsselpaar ist zwar eine Passphrase zugeordnet, aber OS X Keychain hat sich diese beim ersten Verbinden gemerkt.

Ich bin also nicht sicher, was ich falsch mache?

Antwort1

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

    Dem oben Gesagten zufolge -Fwird ein Argument erwartet: der Pfad zu einer OpenSSH-Konfigurationsdatei ~/.ssh/configoder Ähnliches. Aber Sie geben stattdessen einen gzippten SQL-Dump.

    Da plain ssh myaliasbereits funktioniert, benötigen Sie die Option hier nicht einmal -F. sftp myaliasStellen Sie einfach eine Verbindung zum Server her.

  2. Der OpenSSH-Client unterstützt jedoch sftpnicht das Hochladen von Dateien, wie Sie es versuchen; er kann nur Dateien herunterladen (mit 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 scpWerkzeug:

    scp db.sql.gz myalias:/tmp
    

    oder

    scp db.sql.gz [email protected]:/tmp
    

(sftp verfügt über einen Batchmodus, in dem es mithilfe von Befehle aus einer Datei lesen kann, für einzelne Uploads -bist dieser Modus jedoch einfacher zu verwenden scp.)

Es gibt auch andere SFTP-Clients –lftpeignet sich gut für die interaktive Nutzung, währendLockekann einfacher zu automatisieren sein. Für Backups und dergleichen können Sie auch verwendenrsync(das sein eigenes Protokoll ausführt, aber immer noch innerhalb von SSH).

Antwort2

Das Problem wird durch die ForwardAgent-Konfiguration wie unten beschrieben verursacht.

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

In meinem Fall lag es am „ForwardAgent“ in der SSH-Konfiguration, der den SCP zum Hängen brachte. Nachdem ich es auskommentiert hatte, hat es bei mir funktioniert.

Sie könnten auch eine Kopie der Datei mit der kommentierten ForwardAgent-Zeile haben und scp -F verwenden, um sie zum Laufen zu bringen.

verwandte Informationen