Boa tarde lista.
Estou tentando fazer uma ferramenta para automatizar a conexão através do ssh.
Já estou usando chaves pub/priv corretamente.
Porém me deparei com um problema.
Ao criar o shell script de conexão preciso usar o comando ssh que usa a
opção -i para receber um arquivo de chave (like ec2 aws).
Infelizmente o comando só suporta no parâmetro -i como entrada um
arquivo. E eu não poderia disponibilizar em disco o arquivo de chave
privada descriptografado.
A ideia inicial era criar um shell e compilá-lo, já com a chave embebida
dentro do script, mas devido a estas limitações do comando ssh parece
que terei que tomar outros caminhos.
Vasculhando na internet no site do ssh existe uma discussão a respeito
do assunto, onde um camarada havia feito uma modificação no código c do
ssh para aceitar como opção a chave privada através de uma variável ao
invés de um arquivo. De qualquer forma não consegui encontrar os patchs
para fazer o mesmo.
Cheguei o mais próximo dos resultados que busco com o seguinte código:
#!/bin/bash
ssh -i /dev/stdin -n -T -p 22 -l someuser 111.222.333.444 <<EOF
-----BEGIN RSA PRIVATE KEY-----
......
-----END RSA PRIVATE KEY-----
EOF
Mas o problema com este código é que ele faz a conexão e em seguida
desconecta, como se eu estivesse concatenando um comando ao fim do
comando ssh.
Tentei algumas outras formas de criptografia com o ccrypt e o gpg. Porem
todos gerão um arquivo novo com a chave descriptografada. Permitindo
que em algum momento qualquer um possa ler a chave privada.
Não tenho muita habilidade em lidar com o stdin e o stdout, por isso
estou solicitando ajuda a lista. Talvez exista uma maneira de manter a
conexão após efetuar o comando.