cURL для SFTP с аутентификацией с закрытым ключом

Мне нужно загрузить файлы по SFTP из PHP-скрипта. Я думаю, что cURL, вероятно, подходит, так как он доступен на сервере.

У кого-нибудь есть пример использования cURL для SFTP с использованием аутентификации по ключу идентификации?

-- РЕДАКТИРОВАТЬ --

Я только что заметил, что HTTP PUT может быть альтернативой, но насколько это безопасно?


person Owen    schedule 14.07.2010    source источник


Ответы (1)


curl -u <username>: --key ~/.ssh/id_rsa --pubkey ~/.ssh/id_rsa.pub sftp://<remote_host>/<remote_path>

HTTP не защищен, поэтому любые данные, которые вы отправляете во время PUT (например, пароль или файлы, которые вы загружаете), могут быть перехвачены и прочитаны в виде обычного текста. В зависимости от вашего приложения, это может или не может быть проблемой для вас.

person idontevenseethecode    schedule 06.02.2013
comment
Почему curl нужен и ключ, и открытый ключ? - person Angelo; 29.11.2014
comment
@Angelo: Начиная с версии 7.39.0 curl пытается автоматически извлечь открытый ключ из файла закрытого ключа, поэтому передача этой опции обычно не требуется. Источник: curl.haxx.se/docs/manpage.html - person idontevenseethecode; 01.12.2014
comment
Я думаю, я имею в виду: почему для curl это требуется, а для ssh нет? Является ли ssh менее безопасным для атак «человек посередине»? - person Angelo; 02.12.2014
comment
@Angelo Открытый ключ можно вычислить из закрытого ключа. Нет проблем с безопасностью (сама по себе) ни с ssh, ни с curl. До версии 7.39.0 curl не вычислял открытый ключ, и его приходилось вводить вручную. - person kbolino; 31.03.2015
comment
Вам не нужно указывать ключ, если это ключ по умолчанию, как в вашем примере. голого curl -u <username>: sftp://<remote_host>/<remote_path> должно быть достаточно. - person Andy; 13.06.2016
comment
Вы загружаете через sftp, поэтому ваше замечание о незащищенном HTTP не имеет смысла - person sstn; 12.09.2019
comment
@sstn, если вы читали вопрос, спрашивали о безопасности HTTP. - person idontevenseethecode; 12.09.2019
comment
Я думаю, что kbolino неправильно. В асимметричном шифровании RSA ни открытый, ни закрытый ключ не могут быть вычислены из другого. Я ошибаюсь? - person David Spector; 20.01.2021
comment
Энди, если curl -u <username>: sftp://<remote_host>/<remote_path> безопасно загружает файл, я поражен. Он не указывает путь к локальному файлу, открытый и закрытый ключи или парольную фразу закрытого ключа. - person David Spector; 20.01.2021