Я пытаюсь обновить свой ssh-сервер с 2048-битных ключей RSA на более крупные ключи, так как в ближайшее время я рекомендую постепенно отказаться от 2048-битных ключей.
Я сгенерировал новый ключ, затем добавил его в конфигурацию sshd, например так:
HostKey / etc / ssh / ssh_host_rsa_key ( сначала старый 2-битный ключ) HostKey / etc / ssh / ssh_host_rsa4096_key (новый больший ключ 2-й )
После перезапуска sshd
я ssh'd к хосту, я не получаю предупреждение об изменении идентификации, однако новое также не кэшируется ~/.ssh/known_hosts
. Если я поставлю строки в обратном порядке, я получу предупреждение об изменении идентификации. Точно так же, когда я добавляю ключ ed25519, независимо от того, в каком порядке я его поместил, клиент не добавляет новый ключ в файл известных хостов.
Похоже, что это делает невозможным переключение ключей хоста SSH - трудно поверить, что это действительно так, хотя, учитывая безопасность, обычно требуется обновление ключей.
Я знаю, что вы можете просто поменять ключ, тогда каждому клиенту нужно запустить, ssh-keygen -R
чтобы удалить старый ключ, а затем вручную проверить и принять новый ключ, но это реальная боль, особенно если у вас много клиентов, подключающихся или не администрирующих все клиенты. Не говоря уже о том, что, если вы не администрируете клиентов, очень велика вероятность того, что они на самом деле не будут проверять ключ хоста, а вместо этого просто нажмут Y - так что попытка улучшить безопасность, скорее всего, фактически откроет вас для человека-человека. средние атаки вместо.
Есть ли способ заставить работать обновления ключа хоста SSH? То есть клиенты должны изучить новый более безопасный ключ (а также, надеюсь, не изучить устаревший ключ). И без предоставления ключа хоста изменилось предупреждение «человек посередине».