eu li essa pergunta
Na resposta e solução aparece o seguinte comando (adaptado aqui para fins de apresentação)
ssh-keyscan 192.168.1.X | ssh-keygen -lf -
Eu sei que o primeiro comando isolado mostra o public keys
do host. Quando o comando completo é executado - portanto, as duas partes - de acordo com a saída final, as chaves públicas do primeiro comando são usadas para gerar a impressão digital de si mesmas.
pergunta
- Como
-
funciona nossh-keygen -lf -
comando?
É obrigatório. Eu sei que l
é mostrar a impressão digital e f
definir um nome de arquivo, mas como é interpretado -
?
Por padrão,
ssh-keygen -l
perguntará interativamente qual arquivo de chave pública mostrar a impressão digital. Com-f
você, dê a ele o nome do caminho de algum arquivo existente.Se o nome do caminho for
-
(um traço), a entrada será lida da entrada padrão em vez de um arquivo.Esta é uma prática comum que alguns outros comandos também seguem, mais notavelmente
cat
(cat -
lê da entrada padrão).Em seu pipeline, os dados na entrada padrão são fornecidos pelo
ssh-keyscan
comando. Ossh-keyscan
comando extrairá a chave pública do host mencionado e a passará para ossh-keygen -l
. Ossh-keygen
utilitário produzirá a impressão digital.Sem
-f -
, ossh-keygen
utilitário tentaria usar a saída dessh-keyscan
como o nome do arquivo para ler a chave.Este é um design indiscutivelmente ruim, pois é fácil determinar programaticamente se a entrada de um programa vem de um terminal ou de algo que não é um terminal (como outro comando ou arquivo). Então, em certo sentido,
-f -
poderia ser desnecessário.