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

44

Talvez meu google-foo esteja falhando comigo ... Gostaria de conectar e fazer upload de um arquivo de despejo mysql via terminal usando SFTP ou SCP para o meu servidor remoto usando meu arquivo de configuração ssh. De acordo com a documentação que encontrei, devo fazer isso:

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

Eu também cansei o alias na minha configuração:

sftp -F db.sql.gz myalias /tmp

Quando eu faço os dois acima, simplesmente obtenho uma impressão dos possíveis comandos, -Fsendo um deles.

Eu já posso conectar via ssh usando o atalho na minha configuração local muito bem, então eu sei que funciona:

ssh myalias

** Nota: estou conectando usando um par de chaves públicas / privadas, para nunca precisar digitar uma senha. O par de chaves tem uma senha associada, mas o OS X Keychain lembrou que na primeira vez que eu me conectei.

... então não tenho certeza do que estou fazendo de errado.

Danny Englander
fonte

Respostas:

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

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

    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 no modo interativo. Para fazer o 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 envios únicos.)

Também existem outros clientes SFTP - o lftp é bom para uso interativo, enquanto o curl pode ser mais fácil de automatizar. Para backups e similares, você também pode usar o rsync (que executa seu próprio protocolo, mas ainda dentro do SSH).

gravidade
fonte
uau isso é perfeito, funcionou muito bem! Estou apenas me familiarizando com o terminal, e isso será realmente útil no futuro.
Danny Englander
0

Problema causado pela configuração do ForwardAgent, como abaixo,

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

Meu caso, foi devido ao 'ForwardAgent' na configuração do ssh, causando a interrupção do scp. 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.

MohanBabu
fonte