Как использовать команду openssh sftp с ключом RSA / DSA, указанным в командной строке

35

Команда Openssh ssh и scp предоставила параметр -iкомандной строки для указания пути к ключу RSA / DSA, который будет использоваться для аутентификации.

Просматривая справочные страницы sftp, я не смог найти способ указать ключ RSA / DSA.

Я ищу способ инициировать сеанс sftp, который будет использовать указанный ключ RSA / DSA, а не ключи ~ / .ssh / id_ {dsa, rsa}.

Я пробовал OpenSSH sftp клиент на Linux ... но он должен иметь те же опции на других платформах.

Ади Ройбан
источник
2
Пожалуйста, укажите, какой клиент sftp вы используете на какой платформе.
Дмурати

Ответы:

41

Одним из возможных вариантов является использование sftp -oIdentityFile=/path/to/private/keyfile. Нужно больше информации, чтобы сказать, будет ли это работать для вас. Кажется, работает под Mac / Linux.

dmourati
источник
11

Вы можете просто использовать -iаргумент для вашей команды sftp или ssh.

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

Если опция -i недоступна, вы можете использовать опцию -o со следующим синтаксисом:

sftp -oIdentityFile=/path/to/private/keyfile ...
slubman
источник
4
У sftp нет опции -i, по-видимому, поэтому ОП задает вопрос.
user9517 поддерживает GoFundMonica
работает под моими хостами Linux, но не под моим ноутбуком Mac, где опция -i, кажется, не существует.
dmourati
На моих хостах Ubuntu и CentOS нет ключа -i для
sftp
Мой клиент CentOS делает: [dmourati @ flexo ~] $ cat / etc / redhat-release CentOS выпуск 5.6 (финальный) [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 | Глава SFTP (1) Руководство по общим командам BSD SFTP (1) ИМЯ sftp - программа безопасной передачи файлов СИНТАКСИС sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c шифр] [-D sftp_server_path] [-F ssh_config] ] [-i identity_file]
dmourati
1
@dmourati: И мой не [iain @ centos ~] $, который ssh ​​/ usr / bin / ssh [iain @ centos ~] $, который 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 SFTP (1) NAME sftp - программа безопасной передачи файлов SYNOPSIS sftp [- 1Cv] [-B buffer_size] [-b пакетный файл] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S программа] [-s подсистема | sftp_server] host sftp [[user @] host [: file [file]]]
user9517 поддерживает GoFundMonica
8

Вы можете создать альтернативный файл конфигурации для соединения и использовать -Fключ, чтобы сообщить ssh, что нужно его использовать. создайте файл конфигурации, например, ~ / .ssh / config.sftp с содержимым

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

тогда вызывайте sftp как

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

Приведенная выше конфигурация ограничивает использование альтернативного ключа (при использовании этого файла конфигурации) для пользователя RemoteUserName на remote.host.tld.

Загляните на страницу man для ssh_confg для использования альтернативного файла конфигурации

иан
источник
Спасибо большое за помощь! Ваше решение предоставляет чистую альтернативу аргументам командной строки. Сейчас я предпочитаю передавать все аргументы через командную строку, так как я уже использую -oPort = ALT_PORT.
Ади Ройбан