Jak używać komendy openssh sftp z kluczem RSA / DSA określonym z wiersza komend

35

Polecenie openssh ssh i scp zapewniło -iopcję wiersza polecenia określającą ścieżkę do klucza RSA / DSA, który ma być używany do uwierzytelniania.

Patrząc na strony podręcznika sftp, nie byłem w stanie znaleźć sposobu na określenie klucza RSA / DSA.

Szukam sposobu zainicjowania sesji sftp, która użyje określonego klucza RSA / DSA, a nie kluczy ~ / .ssh / id_ {dsa, rsa}.

Próbowałem klienta OpenSSH sftp na Linuksie ... ale powinien mieć te same opcje na innych platformach.

Adi Roiban
źródło
2
Określ, którego klienta sftp używasz na której platformie.
dmourati

Odpowiedzi:

41

Jedną z potencjalnych opcji jest użycie sftp -oIdentityFile=/path/to/private/keyfile. Potrzebujesz więcej informacji, aby powiedzieć, czy to zadziała dla Ciebie. Wydaje się działać w systemie Mac / Linux.

dmourati
źródło
11

Możesz po prostu użyć -iargumentu dla polecenia sftp lub ssh.

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

Jeśli opcja -i nie jest dostępna, możesz użyć opcji -o ze składnią taką jak:

sftp -oIdentityFile=/path/to/private/keyfile ...
slubman
źródło
4
sftp nie ma opcji -i, prawdopodobnie dlatego OP zadaje pytanie.
user9517 obsługuje GoFundMonica
działa na moich hostach Linux, ale nie na moim laptopie Mac, na którym wydaje się, że opcja -i nie istnieje.
dmourati
Moje hosty Ubuntu i CentOS nie mają przełącznika -i dla sftp
user9517 obsługuje GoFundMonica
Mój klient CentOS: [dmourati @ flexo ~] $ cat / etc / redhat-release CentOS release 5.6 (Final) [dmourati @ flexo ~] $ które ssh / usr / bin / ssh [dmourati @ flexo ~] $ które 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 (1) Podręcznik poleceń ogólnych SFTP (1) NAZWA sftp - bezpieczny program do przesyłania plików SYNOPSIS sftp [-1246Cpqrv] [-B rozmiar_buforu] [-b plik wsadowy] [-c szyfr] [-D ścieżka_serwera_ftft] [-F ssh_config ] [-i
plik_identyfikacji
1
@dmourati: A moje nie [iain @ centos ~] $ które ssh / usr / bin / ssh [iain @ centos ~] $ które sftp / usr / bin / sftp [iain @ centos ~] $ rpm -qf / usr / bin / sftp openssh-client-4.3p2-72.el5_6.3 [iain @ centos ~] $ man sftp | head SFTP (1) BSD Ogólne polecenia Podręcznik SFTP (1) NAZWA sftp - bezpieczny program do przesyłania plików SYNOPSIS sftp [- 1Cv] [-B rozmiar_buforu] [-b plik wsadowy] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R liczba_requests] [-S program] [-s podsystem | sftp_server] host sftp [[użytkownik @] host [: plik [plik]]]
user9517 obsługuje GoFundMonica
8

Możesz utworzyć alternatywny plik konfiguracyjny dla połączenia i użyć -Fprzełącznika, aby powiedzieć ssh, aby go użył. utwórz plik konfiguracyjny np. ~ / .ssh / config.sftp z zawartością

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

następnie wywołaj sftp w ten sposób

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

Powyższa konfiguracja ogranicza użycie klucza alternatywnego (gdy używany jest ten plik konfiguracyjny) do użytkownika RemoteUserName na remote.host.tld.

Zajrzyj na stronę podręcznika dla ssh_confg, aby zapoznać się z wykorzystaniem alternatywnego pliku konfiguracyjnego

Iain
źródło
Bardzo ci dziękuje za pomoc! Twoje rozwiązanie stanowi czystą alternatywę dla argumentów wiersza poleceń. Na razie wolę przekazywać wszystkie argumenty za pomocą wiersza poleceń, ponieważ już używam opcji -oPort = ALT_PORT.
Adi Roiban