git-ftp SFTP Настройка передачи изменений через ssh с использованием ключа вместо пароля

Что предлагается сделать

В целом секция конфигурируется как и при передаче через FTP, но:

  • если пароль не требуется, то его можно не указывать
  • дополнительно указать путь к файлу ключа (приватного)
  • в url указать протокол sftp
  • +

  • поправить исходный код git-ftp -- возможно, в будущем это не будет требоваться, но на момент создания этой заметки по другому завести git-ftp SFTP не получилось. Главная идея правки -- выключить использование отдельного открытого ключа.

Настройка -- правки в .git/config

Мы будем использовать приватный ключ с расширением .pem (из такого можно извлечь открытый).

В .git/config локальной копии репозитория добавим данные для нового подключения, назовём его, скажем, "amazon-test":

[git-ftp "test"]
user = sberstrah
url = "88.70.34.227//home/sua/"
password = "sbe014"


[git-ftp "amazon-test"]

user = centos
url = "sftp://52.24.38.31//home/centos/test/"
key = D:\\myone\\k\\aws_sberam.pem

-- обратите внимание, здесь секция "test" сконфигурирована под использование ftp, а секция "amazon-test" под использование sftp.

Правка исходников (сначала попробуйте без этого)

Правка скачанного файла

В файле git-ftp, который лежит по адресу, в который вы клонировали с гитхаба (или клонируйте ещё раз, если не можете найти) проект при установке находим фрагмент:

write_log "Using ssh public key file $CURL_PUBLIC_KEY"
REMOTE_CMD_OPTIONS="$REMOTE_CMD_OPTIONS --key $CURL_PRIVATE_KEY --pubkey $CURL_PUBLIC_KEY "

и меняем:

REMOTE_CMD_OPTIONS="$REMOTE_CMD_OPTIONS --key $CURL_PRIVATE_KEY --pubkey $CURL_PUBLIC_KEY "

на :

REMOTE_CMD_OPTIONS="$REMOTE_CMD_OPTIONS --key $CURL_PRIVATE_KEY " #--pubkey $CURL_PUBLIC_KEY

-- выключаем использование публичного ключа, по тому же принципу что и для curl.

В принципе, можно изменить и выводимый в консоль комментарий -- написать, например:

write_log "NOT Using ssh public key file $CURL_PUBLIC_KEY -- get it from private"

Копирование в "исполняемую" директорию

В т.ч. в git bash на windows скопируем исправленный файл git-ftp в секцию исполняемых файлов /bin/ (иначе изменения не применятся), для этого нам потребуется команда вроде:

cp  /c/progs/git/git-ftp/git-ftp /bin/git-ftp

-- это в случае если на файле уже есть необходимые права иначе предварительно выполните в диретории расположения файла:

chmod +x git-ftp

Итак мы обновили код git-ftp, осталось настроить доступ к серверу через SFTP c использованием приватного ключа.