Como eu uso meu arquivo de chaves para transferir dados de um servidor para outro?

19

Eu não consigo scp, o outro servidor só usa conexões sftp.

Atualmente, estou tentando fazer

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

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

    
por Jay 04.10.2012 / 19:48

4 respostas

24

Tente:

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

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

    
por 04.10.2012 / 20:00
2

Copie sua chave PUBLIC para o servidor usando os meios tradicionais.

No servidor:

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

Depois disso, você poderá fazer login a partir do cliente usando a chave PRIVATE. Para automatizar uma transferência, você deseja usar um arquivo em lote, que é apenas um arquivo de texto contendo uma lista de comandos a serem executados.

echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile=/path/to/private_key user@host

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

sftp -b /tmp/batchfile.txt host

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

Host the_hostname
    User user_name
    IdentityFile /path/to/private_key
    
por 04.10.2012 / 23:09
1

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

    
por 04.10.2012 / 19:56
0

Entrei nessa edição recentemente e o que funcionou para mim na configuração do meu terminal padrão do macbook é o seguinte

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

Note que você pode ser promovido com a mensagem UNPROTECTED PRIVATE KEY FILE! , caso em que você precisa executar este comando para garantir que sua chave privada não seja acessível por outras pessoas.

chmod 600 privateFilePath.key 

Em alguns casos, você precisa colocar sudo na frente do comando, isso é somente se você estiver trabalhando em um diretório protegido por admin

Eu gostaria que isso fosse útil :)

    
por 06.08.2018 / 15:53