AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1164740
Accepted
QF0
QF0
Asked: 2024-09-04 01:57:24 +0800 CST2024-09-04 01:57:24 +0800 CST 2024-09-04 01:57:24 +0800 CST

ssh-keygen não está lendo stdin para obter uma senha criptografada (ou: o que é ssh-askpass?)

  • 772

Estou automatizando a geração de chaves com ssh-keygen(OpenSSH v8.9), em um servidor headless. Isso é direto se nenhuma senha for necessária, mas fica difícil se você precisar de uma senha. ssh-keygenprecisa de 3 coisas no stdin ao gerar uma nova chave: y, porque o arquivo de chaves já existe, e a senha necessária, repetida duas vezes.

Com alguma simplificação, estou fazendo isso da seguinte maneira:

$ printf -v input "y\npassword\npassword\n"
$ echo -n "$input"
y
password
password
$ echo -n "$input" | ssh-keygen -t ed25519 -a100 -f tmpkey

Quando fiz isso inicialmente, obtive esta saída:

Generating public/private ed25519 key pair.
tmpkey already exists.
Overwrite (y/n)? ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory

O par de chaves foi criado, mas a chave privada não foi criptografada. Então, eu instalei ssh-askpass, em um sistema de teste com X. Quando eu executo ssh-keygenagora, eu recebo um pop-up de autenticação OpenSSH, e stdin agora é ignorado. Obviamente, eu não posso ter um pop-up gráfico em um servidor headless, mesmo se eu quisesse.

Então o que está acontecendo? Posso persuadir ssh-keygena automatizar a entrada de senha? Se não, posso usar opensslpara adicionar uma senha ou até mesmo criar o arquivo? Eu quero obter uma chave de formato OpenSSH disso - já estou automatizando o PKCS#8 com o openssl.

EDITAR

Eu encontrei o SSH_ASKPASS_REQUIREenvvar para ssh(não ssh-keygen). Se eu configurá-lo para 'never', ele para o ssh-askpasspopup, mas ssh-keygenagora lê apenas a primeira linha de stdin e ignora a senha nas próximas duas linhas. Então, não me leva a lugar nenhum.

ssh
  • 2 2 respostas
  • 59 Views

2 respostas

  • Voted
  1. Best Answer
    EML
    2024-09-07T20:23:13+08:002024-09-07T20:23:13+08:00

    Em vez disso, você pode gerar a chave usando PuTTYgen, como dave_thompson_085 apontou nos comentários. Spoiler: você provavelmente não quer fazer isso, pois puttygenparece ter suporte OpenSSH incompleto.

    Isso lhe dará uma chave privada OpenSSH:

    prikey=$(echo "$password" | puttygen -q -t ed25519 -C '' -O private-openssh-new -o /dev/stdout --new-passphrase /dev/stdin)
    

    A frase-senha está em stdin, e a chave vai para stdout, então não há nada registrado no seu histórico bash, ou na pssaída. Agora você pode obter a chave pública como:

     tmppipe=$(mktemp -u)
     mkfifo -m 600 "$tmppipe"
     echo "$prikey" > "$tmppipe" &
     pubkey=$(echo "$password" | puttygen "$tmppipe" --old-passphrase /dev/stdin -O public-openssh)
    

    Até agora, isso é muito melhor do que ssh-keygen. No entanto, a mosca na sopa é -a100. O procedimento acima gera um arquivo de chave com os 16 rounds KDF padrão.

    Os puttygendocumentos (na verdade, a página do manual; não há documentos escritos, eu acho) não são claros sobre a configuração do número de rodadas KDF, mas parece que você pode definir isso com --ppk-param passes=$rounds. Isso parece funcionar se você estiver gerando um arquivo PuTTY PPK, mas não funciona para um arquivo OpenSSH. puttygennão reclama, mas o arquivo de chave ainda mostra 16 rodadas, e fazer roundsum número grande não faz diferença no tempo necessário para descriptografar a chave. Para encontrar o número de rodadas codificadas no arquivo, veja a resposta de Gilles aqui .

    A menos que eu tenha perdido algo na página do manual, isso torna puttygenbem inútil gerar chaves OpenSSH com frases-senha . Eu pessoalmente usaria ssh-keygene espero que ninguém esteja olhando quando você estiver criando as chaves. Até onde eu posso entender, você também não pode usar puttygenpara alterar o comentário no arquivo de chaves.

    • 1
  2. Romeo Ninov
    2024-09-04T02:49:19+08:002024-09-04T02:49:19+08:00

    A maneira de fornecer a senha é usando -N:

    echo y| ssh-keygen -t ed25519 -a100 -N "$input" -f tmpkey
    

    É claro que você deve fornecer à variável inputum conteúdo como o seu:

    input=password
    
    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve