Como uso meu arquivo de chave para transferir dados sftp de um servidor para outro

25

Eu não posso scp, o outro servidor só leva conexões sftp.

Atualmente, estou tentando fazer

sftp [email protected]:/files> put -r ~/

-i keynamenão funciona, apenas resolve com illegal option -- i.

Jay
fonte

Respostas:

34

Experimentar:

sftp -o "IdentityFile=keyname" [email protected]

Você pode usar -opara passar qualquer opção válida ~/.ssh/config.

Celada
fonte
Acertou em cheio. obrigado! como faço para mantê-lo lá normalmente?
Jay
Não sei o que você quer dizer com "mantenha-o normalmente". Se você quer dizer que você quer que a IdentityFileopção de sempre automaticamente ser dada, veja UtahJarhead resposta s' sobre colocá-lo em~/.ssh/config
Celada
4

Copie sua chave PUBLIC para o servidor usando meios tradicionais.

No servidor:

  • Crie .sshse não existir:
[[! -d "$ {HOME} /. ssh"]] && mkdir -p "$ {HOME} /. ssh"
  • Implemente a chave pública:
cat /path/to/public_key.pub >> "$ {HOME} /. ssh / allowed_keys"
  • Defina as permissões apropriadas. O OpenSSH é MUITO ANAL sobre as permissões dos arquivos em questão:
chmod go-rwx "$ {HOME}" "$ {HOME} /. ssh / allowed_keys"

Depois disso, você deverá conseguir fazer login no cliente usando a chave PRIVATE. Para automatizar uma transferência, você deseja usar um arquivo em lotes, que é apenas um arquivo de texto que contém uma lista de comandos a serem executados.

echo "colocar filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile = / caminho / para / chave_principal usuário @ host

Como alternativa, sinta-se à vontade para criar um arquivo ~ / .ssh / config no formato ssh_config para que você possa digitar isso no futuro:

host sftp -b /tmp/batchfile.txt

Amostra de conteúdo de ~/.ssh/config

Host the_hostname
    Usuário user_name
    IdentityFile / path / to / private_key
UtahJarhead
fonte
Vou tentar isso no próximo lote, mas a solução acima fez o truque.
Jay
1

Se você deseja configurar o sftp no ec2, este artigo pode ajudar

Anshu
fonte
Desculpe, realmente não.
Jay
11
Essa "resposta" não tem nada a contribuir para a pergunta. Pior, é apenas um link para uma página que um dia desaparecerá.
John Mayor
0

Eu entrei nesta questão recentemente e o que funcionou para mim na minha configuração de terminal padrão do macbook é o seguinte

sftp -i ./privateFilePath.key [email protected]

Observe que você pode ser promovido com o ARQUIVO CHAVE PRIVADO NÃO PROTEGIDO! mensagem, nesse caso, você precisa executar este comando para garantir que sua chave privada não esteja acessível por outras pessoas.

chmod 600 privateFilePath.key 

Em alguns casos, você precisa colocar o sudo na frente do comando, isso é apenas se você estiver trabalhando em um diretório protegido pelo administrador

Eu desejo que isso seja útil :)

KhaledMohamedP
fonte
Por que você espera que isso seja útil quando a pergunta dizia que a -iopção não está funcionando?
Scott