Passando uma chave privada para scp da linha de comando ao invés de um arquivo [closed]

5

Existe uma maneira de passar o conteúdo de uma chave privada diretamente para o comando scp em vez de copiá-lo para um arquivo e apontá-lo através da opção -i /path/to/key.pem ?

Então, ao invés de fazer:

scp -i key.pem source target

Posso fazer algo como o seguinte?

scp -i '-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAMIIEowIBAA...\n' source target

É claro que tentei isso e não funciona, mas talvez isso possa ser conseguido com alguma tubulação BASH, redirecionamento de saída ou algo assim.

A razão pela qual eu preciso fazer isso é porque eu não posso armazenar as chaves no sistema de arquivos (é uma história muito longa e chata) e este comando precisará ser executado milhões e milhões de vezes com uma chave diferente a cada vez então o disco extra i / o será significativo em nossos resultados.

    
por Julian 02.05.2014 / 06:16

2 respostas

4

Se você não podemos divulgar mais nenhuma informação nós realmente não podemos ajudá-lo: Questões sobre falha do servidor precisam fornecer um contexto suficiente para que possamos analisar o problema de forma inteligente, e este não.

O que posso lhe dizer definitivamente é que "passar a chave na linha de comando" é uma Idéia Ruim: se você fizer isso, você herda todos os problemas discutidos em esta questão que basicamente significa qualquer um na máquina pode ver sua chave privada . (É por isso que os comandos ssh , scp e sftp não permitem que você faça isso.)

Considere o uso de ssh-agent para manipular suas chaves em vez disso - há algumas implicações adicionais aqui, mas você basicamente pode armazenar suas chaves no sistema de arquivos, carregá-las no agente e depois permitir que o agente passe as chaves para o cliente para fins de autenticação (que deve ser resolvido ou menos reduza seus problemas de desempenho).

Se ssh-agent não é adequado para as suas necessidades, você está prestes a hackear e recompilar o cliente SSH para suportar o que você deseja de alguma forma.

    
por 06.05.2014 / 19:59
0

Se você tiver que especificar o arquivo na linha de comando, você pode fazer o upload de um arquivo como este:

echo -ne '-----BEGIN ...\n' | ssh target_host "cat > ~/.ssh/authorized_keys"

A opção -n para eco suprime a nova linha à direita. A opção -e expande caracteres de escape como \n . Se você deseja anexar a um arquivo em vez de substituí-lo, use >> em vez de > .

    
por 02.05.2014 / 07:20