
Gostaria de conectar e fazer upload de um arquivo de despejo MySQL via terminal usando SFTP ou SCP para meu servidor remoto usando meu arquivo de configuração SSH. De acordo com a documentação que encontrei, devo conseguir fazer isso:
sftp -F db.sql.gz [email protected] /tmp
Eu também tentei o alias em minha configuração:
sftp -F db.sql.gz myalias /tmp
Quando faço os dois acima, simplesmente recebo uma impressão dos comandos possíveis, -F
sendo um deles.
Já consigo me conectar via SSH usando o atalho na minha configuração local, então sei que funciona:
ssh myalias
Observação: estou me conectando usando um par de chaves privada/pública, então nunca preciso digitar uma senha. O par de chaves tem uma senha associada a ele, mas o OS X Keychain lembrou disso na primeira vez que me conectei.
Então não tenho certeza do que estou fazendo de errado?
Responder1
Do texto de ajuda: "
... [-F ssh_config] ...
"De acordo com o exposto acima,
-F
espera um argumento: caminho para um arquivo de configuração OpenSSH~/.ssh/config
ou similar. Mas você está fornecendo um dump SQL compactado.Como o plain
ssh myalias
já está funcionando, você nem precisa da-F
opção aqui. Apenassftp myalias
se conectaria ao servidor.No entanto, o
sftp
cliente OpenSSH não suporta o upload de arquivos como você está tentando; ele só pode baixar arquivos (usando a sintaxehost:path
) ou trabalhar em modo interativo. Para fazer upload, você precisa usar o modo interativo...$ sftp myalias sftp> cd /tmp sftp> put db.sql.gz
...ou a
scp
ferramenta:scp db.sql.gz myalias:/tmp
ou
scp db.sql.gz [email protected]:/tmp
(o sftp possui um modo em lote no qual pode ler comandos de um arquivo usando -b
, mas é mais simples de usar scp
para uploads únicos.)
Existem outros clientes SFTP também –lftpé bom para uso interativo, enquantoondulaçãopode ser mais fácil de automatizar. Para backups e coisas assim, você também pode usarsincronizar novamente(que executa seu próprio protocolo, mas ainda dentro do SSH).
Responder2
Problema causado pela configuração do ForwardAgent conforme abaixo,
Host dockervm
HostName x.x.x.x
User root
Preferredauthentications publickey
ForwardAgent yes
No meu caso, foi devido ao 'ForwardAgent' na configuração do ssh fazendo com que o scp travasse. Depois de comentar, funcionou para mim.
Além disso, você pode ter uma cópia do arquivo com a linha ForwardAgent comentada e usar scp -F para fazê-lo funcionar.