Использую ли я SCP или SFTP с моим файлом конфигурации SSH?

Использую ли я SCP или SFTP с моим файлом конфигурации SSH?

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

sftp -F db.sql.gz [email protected] /tmp

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

sftp -F db.sql.gz myalias /tmp

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

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

ssh myalias

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

Так что я не уверен, что я делаю не так?

решение1

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

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

    Так как plain 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 [email protected]:/tmp
    

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

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

решение2

Проблема вызвана конфигурацией ForwardAgent, как показано ниже.

Host dockervm
   HostName x.x.x.x
   User root
   Preferredauthentications publickey
   ForwardAgent yes

В моем случае это было из-за 'ForwardAgent' в конфигурации ssh, из-за чего scp зависал. После того, как я его закомментировал, у меня все заработало.

Кроме того, вы можете сделать копию файла с закомментированной строкой ForwardAgent и использовать scp -F, чтобы все заработало.

Связанный контент