Como gerar chaves SSH antes que o daemon ssh faça pela primeira vez [closed]

1

Eu preciso configurar um fragberry pi de uma maneira que eu conheça as impressões digitais ssh antes da primeira inicialização, então a única maneira é gerar as chaves no cartão SD no meu computador e obter as impressões digitais. Eu fiz isso, mas quando o framboesa pega, ele cria novas chaves em cima das que eu gero. Como evitar que o daemon ssh o faça? Certamente lê em algum lugar se é a primeira inicialização, que tem que ser uma maneira de mudar isso.

EDITAR:

Meu script coloca os arquivos ssh gerados em / etc / ssh. Na primeira inicialização, este é o log do /var/log/daemon.log para o serviço sh:

Sep  7 16:12:31 raspberrypi sh[297]: removed '/etc/ssh/ssh_host_dsa_key'
Sep  7 16:12:31 raspberrypi sh[297]: removed '/etc/ssh/ssh_host_dsa_key.pub'
Sep  7 16:12:31 raspberrypi sh[297]: removed '/etc/ssh/ssh_host_ecdsa_key'
Sep  7 16:12:31 raspberrypi sh[297]: removed '/etc/ssh/ssh_host_ecdsa_key.pub'
Sep  7 16:12:31 raspberrypi sh[297]: removed '/etc/ssh/ssh_host_rsa_key'
Sep  7 16:12:31 raspberrypi sh[297]: removed '/etc/ssh/ssh_host_rsa_key.pub'

De alguma forma, sabe que essas chaves não foram geradas pelo serviço SSH. Note que eu não criei o ssh_host_ed25519_key. Poderia ser o motivo? Mas eu comentei sua linha em sshd_config :

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

Poderia ser a razão pela qual detectou e removeu as chaves?

EDIT 2:

Adicionei a chave ed25519 de um cartão sd inicializado e ainda removi todas as chaves:

Sep  7 16:12:32 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_dsa_key'
Sep  7 16:12:33 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_dsa_key.pub'
Sep  7 16:12:33 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_ecdsa_key'
Sep  7 16:12:33 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_ecdsa_key.pub'
Sep  7 16:12:33 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_ed25519_key'
Sep  7 16:12:33 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_ed25519_key.pub'
Sep  7 16:12:33 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_rsa_key'
Sep  7 16:12:33 raspberrypi sh[311]: removed '/etc/ssh/ssh_host_rsa_key.pub'

Eu também vi que eu esqueci de adicionar as permissões adequadas para cada arquivo, mas eu fiz nesta última tentativa e ainda nada. Eu fiz 600 para chaves privadas e 644 para chaves públicas, assim como o sshd faz quando gera novas

EDIT 3:

Eu tentei pesquisar por "removed" na fonte do github para ver se conseguia encontrar a parte do código que acionou a remoção da chave, mas não consegui encontrá-la: link

    
por Guerlando OCs 01.10.2017 / 02:30

1 resposta

1

O Raspbian tem um serviço na imagem chamado regenerate_ssh_host_keys.

[Unit]
Description=Regenerate SSH host keys
Before=ssh.service

[Service]
Type=oneshot
ExecStartPre=-/bin/dd if=/dev/hwrng of=/dev/urandom count=1 bs=4096
ExecStartPre=-/bin/sh -c "/bin/rm -f -v /etc/ssh/ssh_host_*_key*"
ExecStart=/usr/bin/ssh-keygen -A -v
ExecStartPost=/bin/systemctl disable regenerate_ssh_host_keys

[Install]
WantedBy=multi-user.target

Isso remove todas as chaves já presentes, regenera as chaves e desativa o serviço para que ele não seja executado novamente. Você pode desativar esse serviço (removendo o arquivo /etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service ) ao mesmo tempo em que instala as chaves.

    
por BowlOfRed 06.10.2017 / 05:00