38

Возможно, мой Google-Foo подводит меня здесь ... Я хотел бы подключиться и загрузить файл дампа mysql через терминал, используя SFTP или SCP, на мой удаленный сервер, используя мой конфигурационный файл ssh. Согласно документации, которую я нашел, я должен быть в состоянии сделать это:

sftp -F db.sql.gz webost@staging2.example.com /tmp

Я также устал от псевдонима в моей конфигурации:

sftp -F db.sql.gz myalias /tmp

Когда я делаю два выше, я просто получаю распечатку возможных команд, -F является одной из них.

Я уже могу подключиться через SSH с помощью ярлыка в моей локальной конфигурации просто отлично, поэтому я знаю, что работает:

ssh myalias

** Примечание: я подключаюсь, используя пару секретный / открытый ключ, поэтому мне никогда не нужно вводить пароль. С парой ключей есть парольная фраза, связанная с ней, но OS X Keychain помнил, что при первом подключении.

... так что я не уверен, что я делаю неправильно.

1 ответ1

44
  1. Из справки: « ... [-F ssh_config] ... "

    Согласно вышесказанному, -F ожидает один аргумент: путь к файлу конфигурации OpenSSH, ~/.ssh/config или аналогичный. Но вместо этого вы даете ему сжатый дамп SQL.

    Так как обычный ssh myalias уже работает, вам даже не нужна опция -F . Просто sftp myalias будет подключаться к серверу.

  2. Однако клиент OpenSSH sftp не поддерживает загрузку файлов, как вы пытаетесь; он может загружать только файлы (используя синтаксис host:path) или работать в интерактивном режиме. Для загрузки вам необходимо использовать либо интерактивный режим ...

    $ sftp myalias
    sftp> cd /tmp
    sftp> put db.sql.gz
    

    ... или инструмент scp :

    scp db.sql.gz myalias:/tmp
    

    или же

    scp db.sql.gz webost@staging2.example.com:/tmp
    

(У sftp есть пакетный режим, в котором он может читать команды из файла, используя -b , но проще использовать scp для одиночной загрузки.)

Есть и другие SFTP-клиенты - lftp хорош для интерактивного использования, тогда как curl может быть проще автоматизировать. Для резервного копирования и тому подобного вы также можете использовать rsync (который запускает собственный протокол, но все еще внутри SSH).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .