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 jay@server.name.com:/files> put -r ~/

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

Respostas:


34

Experimentar:

sftp -o "IdentityFile=keyname" jay@server.name.com

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


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

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


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 username@url.com

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 :)


Por que você espera que isso seja útil quando a pergunta dizia que a -iopção não está funcionando?
Scott
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.