Automatizando pressionamentos de tecla “enter” para script bash gerando chaves ssh


101

Eu gostaria de criar um script que simplesmente seja executado ssh-keygen -t rsa. Mas como passar para ele entrar 3 vezes?

Respostas:


217

Experimentar:

ssh-keygen -t rsa -N "" -f my.key

-N "" diz a ele para usar uma senha longa vazia (a mesma que duas das entradas em um script interativo)

-f my.keydiz a ele para armazenar a chave em my.key(mude como achar necessário).

A coisa toda funciona sem que você precise fornecer nenhuma tecla enter :)

Para enviar entradas para um script interativo:

echo -e "\n\n\n" | ssh-keygen -t rsa

4
Está correto anwser, mas ainda gostaria de saber como pressionar Enter mais de uma vez - em outro script.
Sławosz

3
Com certeza - atualizou a resposta para incluir como enviar novas linhas para um script.
Rudu,

2
echo -e "\ n \ n \ n" | sshkeygen -t rsa não está funcionando para mim, você pode tentar você mesmo? Passe apenas primeiro entre. Mas em outro script simples funciona.
Sławosz

1
Eu testei antes de postá-lo - ele funciona bem, embora pareça que o traço ssh-keygencaiu - você o adicionou de volta? {editado} Além disso - você não pode executar o script mais de uma vez - ele muda as perguntas para confirmar que você deseja sobrescrever o _rsaarquivo de chave existente (portanto, ay ou n precisa ser fornecido)
Rudu

13
Eu recomendaria usar em yes ""vez de echo -e "\n\n\n"( yesproduz qualquer argumento fornecido [ou "y" por padrão] no infinito - perfeito para essas situações em que se deseja apenas dar uma resposta "sim" para qualquer coisa que um programa possa solicitar). yesé mais curto e deve ssh-keygensempre adicionar uma pergunta, que também será respondida automaticamente. :)
zrajm


1

Concordo com Michel Marro, exceto que precisa de mais alguns: Se o arquivo já existir, ele ainda será interativo perguntando se deve sobrescrevê-lo.

Use a resposta desta pergunta .

yes y | ssh-keygen -q -t rsa -N '' >/dev/null

O redirecionamento para nulo é necessário para silenciar a mensagem de substituição.


0
echo -e "\n"|ssh-keygen -t rsa -N ""

Eh? Na verdade, isso tem menos novas linhas do que uma das respostas que você afirma não funcionar (e isso está no subconjunto de plataformas onde echo -eemite algo diferente de -etudo, que não ssh-keygenestá disponível em todos os lugares ).
Charles Duffy

... para ser claro, eu faço uso de produção ssh-keygen -N ''como parte de um procedimento de instalação automatizado, e ele não lê stdin, então não há necessidade de echo( qualquer echo variante) canalizado nele. (Concedido, acredito que stdin está conectado /dev/nullem meu caso de uso de produção; pode haver um comportamento diferente quando ele está vinculado a um TTY, mas a melhor resposta é </dev/nullao invés de echo ... |)
Charles Duffy

1
Ele me solicita um nome de arquivo: $ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
Mannix

0

É recomendado usar ed25519 para segurança e desempenho.

yes "y" | ssh-keygen -o -a 100 -t ed25519 -C "Bla Bla" -f /mypath/bla -N ""

aqui

-o Formato de chave OpenSSH em vez do PEM mais antigo (requer OpenSSH 6.5+)

-a Número de teste de primalidade durante a triagem de candidatos DH-GEX

-t Tipo de chave (ed25519, RSA, DSA etc.)

-f /mypath/bla O caminho e nome do arquivo de saída

-N "" Use a passphase vazia

e yes "y"sem interação.

Irá gerar dois arquivos

/mypath/bla
/mypath/bla.pub

onde o blaarquivo é privado e bla.pubpúblico.

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.