Мне нужно настроить raspberry pi таким образом, чтобы я знал его отпечатки ssh перед первой загрузкой, поэтому единственный способ - сгенерировать ключи на SD-карте на моем компьютере и получить отпечатки пальцев. Я сделал это, но когда raspberry загружается, он создает новые ключи поверх тех, которые я сгенерировал. Как запретить демону ssh сделать это? Это определенно где-то читается, если это первая загрузка, это должен быть способ это изменить.
РЕДАКТИРОВАТЬ:
Мой сценарий помещает сгенерированные файлы ssh в / etc / ssh. При первой загрузке это журнал /var/log/daemon.log для службы 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'
Он каким-то образом знает, что эти ключи не были сгенерированы службой SSH. Обратите внимание, что я не создавал ssh_host_ed25519_key.Не в этом ли причина? Но я закомментировал его строку в 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
Может ли это быть причиной того, что он обнаружил и удалил ключи?
РЕДАКТИРОВАТЬ 2:
Я добавил ключ ed25519 с предыдущей загруженной SD-карты, и он все равно удалил все ключи:
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'
Я также заметил, что забыл добавить соответствующие разрешения для каждого файла, но сделал это в эта последняя попытка и все еще ничего. Я сделал 600
для закрытых ключей и 644
для открытых ключей, как и sshd
, когда он генерирует новые
EDIT 3:
Я попытался найти «удалено» в источнике github, чтобы узнать, смогу ли я найти фрагмент кода, который инициировал удаление ключа, но не смог его найти: https://github.com/openssh/openssh-portable / search? utf8 =% E2% 9C% 93 & q = удалено & type =
Raspbian имеет сервис в изображении, названном 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
Это удаляет любые ключи, уже представляют, затем повторно создает ключи, затем отключает сервис, таким образом, он не работает снова. Можно отключить тот сервис (путем удаления /etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service
файл) одновременно, Вы устанавливаете ключи.