Wie verwende ich meine Schlüsseldatei, um Daten per SFTP von einem Server auf einen anderen zu übertragen?

25

Ich kann nicht scp, der andere Server nimmt nur SFTP-Verbindungen.

Derzeit versuche ich zu tun

sftp [email protected]:/files> put -r ~/

-i keynamefunktioniert nicht, löst nur mit illegal option -- i.

Jay
quelle

Antworten:

34

Versuchen:

sftp -o "IdentityFile=keyname" [email protected]

Sie können -ojede Option übergeben, die in gültig ist ~/.ssh/config.

Celada
quelle
Geschafft. Vielen Dank! Wie behalte ich es normalerweise dort?
Jay
Ich weiß nicht, was Sie mit "normal dort belassen" meinen. Wenn Sie meinen, dass die IdentityFileOption immer automatisch vergeben werden soll, lesen Sie die Antwort von UtahJarhead zum Einfügen~/.ssh/config
Celada
4

Kopieren Sie Ihren PUBLIC-Schlüssel auf herkömmliche Weise auf den Server.

Auf dem Server:

  • Erstellen Sie, .sshwenn es nicht existiert:
[[! -d "$ {HOME} / .ssh"]] && mkdir -p "$ {HOME} / .ssh"
  • Implementieren Sie den öffentlichen Schlüssel:
cat /path/to/public_key.pub >> "$ {HOME} /. ssh / authorized_keys"
  • Legen Sie die entsprechenden Berechtigungen fest. OpenSSH ist SEHR ANAL bezüglich der Berechtigungen der fraglichen Dateien:
chmod go-rwx "$ {HOME}" "$ {HOME} /. ssh / authorized_keys"

Danach sollten Sie sich mit dem PRIVATE-Schlüssel vom Client aus anmelden können. Um eine Übertragung zu automatisieren, möchten Sie eine Stapeldatei verwenden, bei der es sich lediglich um eine Textdatei handelt, die eine Liste der auszuführenden Befehle enthält.

echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile = / pfad / zu / privatschlüssel benutzer @ host

Alternativ können Sie auch eine ~ / .ssh / config-Datei im ssh_config-Format erstellen, damit Sie dies in Zukunft einfach eingeben können:

sftp -b /tmp/batchfile.txt host

Beispielinhalt von ~/.ssh/config

Host the_hostname
    Benutzer benutzername
    IdentityFile / path / to / private_key
UtahJarhead
quelle
Ich versuche dies bei der nächsten Charge. Die obige Lösung hat es jedoch geschafft.
Jay
1

Wenn Sie sftp auf ec2 einrichten möchten, kann dieser Artikel hilfreich sein

Anshu
quelle
Entschuldigung, das hat es wirklich nicht getan.
Jay
1
Diese "Antwort" hat nichts zu der Frage beizutragen. Schlimmer noch, es ist nur ein Link zu einer Seite, die eines Tages verschwinden wird.
John Mayor
0

Ich habe mich vor kurzem mit diesem Problem befasst und bei meinem MacBook-Standard-Terminal-Setup hat Folgendes funktioniert

sftp -i ./privateFilePath.key [email protected]

Beachten Sie, dass Sie möglicherweise mit einer NICHT GESCHÜTZTEN PRIVATEN SCHLÜSSELDATEI befördert werden! In diesem Fall müssen Sie diesen Befehl ausführen, um sicherzustellen, dass andere Benutzer nicht auf Ihren privaten Schlüssel zugreifen können.

chmod 600 privateFilePath.key 

In einigen Fällen müssen Sie sudo vor den Befehl stellen. Dies ist nur möglich, wenn Sie in einem admin-geschützten Verzeichnis arbeiten

Ich wünschte, das wäre hilfreich :)

KhaledMohamedP
quelle
Warum sollte dies hilfreich sein, wenn die Frage besagt, dass die -iOption nicht funktioniert?
Scott