Verwendung des Befehls openssh sftp mit einem über die Befehlszeile angegebenen RSA / DSA-Schlüssel

35

Mit den Befehlen Openssh ssh und scp wurde eine Befehlszeilenoption bereitgestellt -i, mit der der Pfad zum RSA / DSA-Schlüssel angegeben werden kann, der für die Authentifizierung verwendet werden soll.

In den sftp-Manpages konnte ich keinen Weg finden, den RSA / DSA-Schlüssel anzugeben.

Ich suche nach einer Möglichkeit, eine SFTP-Sitzung zu initiieren, die einen bestimmten RSA / DSA-Schlüssel verwendet und nicht die Schlüssel ~ / .ssh / id_ {dsa, rsa}.

Ich habe den OpenSSH-SFTP-Client unter Linux ausprobiert. Auf anderen Plattformen sollten jedoch dieselben Optionen verfügbar sein.

Adi Roiban
quelle
2
Bitte geben Sie an, welchen SFTP-Client Sie auf welcher Plattform verwenden.
Dmourati

Antworten:

41

Eine mögliche Option ist die Verwendung sftp -oIdentityFile=/path/to/private/keyfile. Benötigen Sie weitere Informationen, um zu sagen, ob das für Sie funktioniert. Scheint unter Mac / Linux zu funktionieren.

dmourati
quelle
11

Sie können einfach das -iArgument für Ihren Befehl sftp oder ssh verwenden.

sftp -i /path/to/private/keyfile ...

Wenn die Option -i nicht verfügbar ist, können Sie die Option -o mit einer Syntax wie der folgenden verwenden:

sftp -oIdentityFile=/path/to/private/keyfile ...
Slubman
quelle
4
sftp hat keine -i-Option, was vermutlich der Grund ist, warum das OP die Frage stellt.
user9517 unterstützt GoFundMonica
Funktioniert unter meinen Linux-Hosts, aber nicht auf meinem Mac-Laptop, wo die Option -i nicht zu existieren scheint.
Dmourati
Meine Ubuntu- und CentOS-Hosts haben keinen -i-Schalter für sftp
user9517 unterstützt GoFundMonica
Mein CentOS-Client führt Folgendes aus: [dmourati @ flexo ~] $ cat / etc / redhat-release CentOS-release 5.6 (Final) [dmourati @ flexo ~] $ which ssh / usr / bin / ssh [dmourati @ flexo ~] $ which sftp / usr / bin / sftp [dmourati @ flexo ~] $ rpm -qf / usr / bin / sftp openssh-clients-4.3p2-72.el5 [dmourati @ flexo ~] $ man sftp [dmourati @ flexo ~] $ man sftp | head SFTP (1) BSD-Handbuch für allgemeine Befehle SFTP (1) NAME sftp - sicheres Dateiübertragungsprogramm ÜBERSICHT sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config ] [-i identity_file]
dmourati
1
@dmourati: Und meine [iain @ centos ~] $ welche ssh / usr / bin / ssh [iain @ centos ~] $ welche sftp / usr / bin / sftp [iain @ centos ~] $ rpm -qf / usr / bin / sftp openssh-clients-4.3p2-72.el5_6.3 [iain @ centos ~] $ man sftp | head SFTP (1) BSD-Handbuch für allgemeine Befehle SFTP (1) NAME sftp - Programm zur sicheren Dateiübertragung SYNOPSIS sftp [- 1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program] [-s subsystem | sftp_server] host sftp [[user @] host [: datei [datei]]
user9517 unterstützt GoFundMonica
8

Sie können eine alternative Konfigurationsdatei für die Verbindung erstellen und den -FSchalter verwenden, um ssh anzuweisen, diese zu verwenden. Erstellen Sie eine Konfigurationsdatei, z. B. ~ / .ssh / config.sftp, mit dem Inhalt

Host remote.host.tld
User RemoteUserName
IdentityFile /path/to/atlernate/identityfile

dann ruf sftp so an

sftp -F ~/.ssh/config.sftp remote.host.tld
Connecting to remote.host.tld...
Enter passphrase for key '/path/to/atlernate/identityfile':
sftp>

Die obige Konfiguration beschränkt die Verwendung des alternativen Schlüssels (wenn diese Konfigurationsdatei verwendet wird) auf den Benutzer RemoteUserName in remote.host.tld.

Schauen Sie sich die Manpage für ssh_confg für die Verwendung der alternativen Konfigurationsdatei an

Iain
quelle
Vielen Dank für Ihre Hilfe! Ihre Lösung bietet eine saubere Alternative zu den Befehlszeilenargumenten. Im Moment ziehe ich es vor, alle Argumente über die Befehlszeile zu übergeben, da ich bereits -oPort = ALT_PORT verwende.
Adi Roiban