Antworten:
Versuchen:
sftp -o "IdentityFile=keyname" jay@server.name.com
Sie können -o
jede Option übergeben, die in gültig ist ~/.ssh/config
.
IdentityFile
Option immer automatisch vergeben werden soll, lesen Sie die Antwort von UtahJarhead zum Einfügen~/.ssh/config
Kopieren Sie Ihren PUBLIC-Schlüssel auf herkömmliche Weise auf den Server.
Auf dem Server:
.ssh
wenn es nicht existiert:[[! -d "$ {HOME} / .ssh"]] && mkdir -p "$ {HOME} / .ssh"
cat /path/to/public_key.pub >> "$ {HOME} /. ssh / authorized_keys"
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
Wenn Sie sftp auf ec2 einrichten möchten, kann dieser Artikel hilfreich sein
Ich habe mich vor kurzem mit diesem Problem befasst und bei meinem MacBook-Standard-Terminal-Setup hat Folgendes funktioniert
sftp -i ./privateFilePath.key username@url.com
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 :)
-i
Option nicht funktioniert?