
Я хотел бы подключиться и загрузить файл дампа 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
Из текста справки: "
... [-F ssh_config] ...
"Согласно вышесказанному,
-F
ожидает один аргумент: путь к файлу конфигурации OpenSSH~/.ssh/config
или подобный. Но вместо этого вы даете ему сжатый SQL-дамп.Так как plain
ssh myalias
уже работает, вам даже не нужна эта-F
опция здесь. Простоsftp myalias
подключитесь к серверу.Однако клиент 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, чтобы все заработало.