Usando SCP ou SFTP com meu arquivo de configuração SSH?

Usando SCP ou SFTP com meu arquivo de configuração SSH?

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, -Fsendo 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

  1. Do texto de ajuda: " ... [-F ssh_config] ..."

    De acordo com o exposto acima, -Fespera um argumento: caminho para um arquivo de configuração OpenSSH ~/.ssh/configou similar. Mas você está fornecendo um dump SQL compactado.

    Como o plain ssh myaliasjá está funcionando, você nem precisa da -Fopção aqui. Apenas sftp myaliasse conectaria ao servidor.

  2. No entanto, o sftpcliente OpenSSH não suporta o upload de arquivos como você está tentando; ele só pode baixar arquivos (usando a sintaxe host: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 scpferramenta:

    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 scppara 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.

informação relacionada