Как изменить ключ хоста SSH?


23

Я клонировал сервер, и поэтому у них один и тот же отпечаток ключа RSA.

Кажется, это определено в /etc/ssh/ssh_host_rsa_key.pub.

Как правильно это изменить?

Спасибо.

Ответы:


23

Или удалите ключи и

ssh-keygen -A

Объяснение:

-A: Для каждого из типов ключей (rsa1, rsa, dsa, ecdsa и ed25519), для которых ключи хоста не существуют, создайте ключи хоста с путем к файлу ключа по умолчанию, пустой парольной фразой, битами по умолчанию для типа ключа и значением по умолчанию комментарий. Это используется / etc / rc для генерации новых ключей хоста.


Теги OP указывают на debian, но, будучи не зависящим от платформы, этот ответ кажется лучшим решением.
— mc0e

Хм, за исключением того, что он не работает для старых версий. Например, сбой при сжатии Debian с OpenSSH_5.5p1
— mc0e

1
Для вашей информации (от manpagez.com/man/1/ssh-keygen ) ssh-keygen -Aвыполняется следующее: «Для каждого из типов ключей (rsa1, rsa, dsa, ecdsa и ed25519), для которых ключи хоста не существуют, сгенерируйте хост ключи с путем к файлу файла ключей по умолчанию, пустой парольной фразой, битами по умолчанию для типа ключа и комментарием по умолчанию. Это используется / etc / rc для генерации новых ключей хоста. "
— Рабарберски

19

Выполните следующие шаги для регенерации ключей хоста OpenSSH

  1. Удалить старые ключи хоста ssh: rm /etc/ssh/ssh_host_*
  2. Переконфигурируйте сервер OpenSSH: dpkg-reconfigure openssh-server
  3. Обновите все ~/.ssh/known_hostsфайлы ssh client (s)

Ссылка


8

Для общего метода сделать это:

ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key

ssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key

ssh-keygen -q -N "" -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

смешивать и сопоставлять в соответствии с ключами, которые поддерживает ваша версия OpenSSH.


1
Я думаю, что одним из способов улучшить этот вопрос было бы добавить способ увеличить количество бит. то естьssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
— Whitecat

0

Удалите их и перезапустите службу SSHd. Они будут возрождены.


1
Нет, это не работает. /etc/init.d/ssh restart<newline> Could not load host key: /etc/ssh/ssh_host_rsa_key<newline> Could not load host key: /etc/ssh/ssh_host_dsa_key<newline> [....] Restarting OpenBSD Secure Shell server: sshdCould not load host key: /etc/ssh/ssh_host_rsa_key<newline> Could not load host key: /etc/ssh/ssh_host_dsa_key
— Паскаль Поллеунус

1
Верно. Работает только на дистрибутивах на основе RHEL. Извините
— Heis Spiter

Хороший совет, спасибо. У меня это работало на установке CentOS.
— Георг Гал

Определенно работает на Fedora
— Дэвид Тонхофер

0

Скрипт (в случае перезапуска демона sshd автоматически не восстанавливать ключи)

#!/bin/bash

# Regenerate SSHD key materials, restart sshd if "-r" passed on command line

set -o nounset

WHERE=/etc/ssh

# go to directory

pushd $WHERE >/dev/null

if [[ $? != 0 ]]; then
   echo "Could not cd to $WHERE -- exiting" >&2
   exit 1
fi

# create backup folder

NOW=`date '+%Y%m%d.%H%M%S'` # default NOW string
BAKDIR=bak_$NOW

mkdir $BAKDIR

if [[ $? != 0 ]]; then
   echo "Could not mkdir $BAKDIR -- exiting" >&2
   exit 1
fi

# move existing key material to backup folder

mv ssh_host_* $BAKDIR

if [[ $? != 0 ]]; then
   echo "Could not move old files to $BAKDIR -- exiting" >&2
   exit 1
fi

# generate new keys

ssh-keygen -A

if [[ $? != 0 ]]; then
   echo "Could not recreate keys -- exiting" >&2
   exit 1
fi

# ssh-keygen may create DSA keys but:
# "Never use DSA or ECDSA"
# http://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys

/bin/rm -f *_dsa_key *_dsa_key.pub
/bin/rm -f *_ecdsa_key *_ecdsa_key.pub

# on Fedora, one has to tune permissions a bit

chmod 640 *_key
chgrp ssh_keys *_key

# make sure SELinux attributes are as they should be

restorecon -R $WHERE

# Done

echo "New key material"
ls -l *_key *_key.pub

# Do the risky thing

if [[ $1 == '-r' ]]; then
   echo "Restarting SSH daemon"
   systemctl restart sshd
fi

# go back to where you where

popd >/dev/null

Ссылка в вашем комментарии не говорит о том, что ECDSA не следует использовать.
— Тодд Уолтон

@ToddWalton На самом деле это так. Третий ответ по порядку: «- Никогда не используйте DSA или ECDSA. - Ed25519, вероятно, является самым сильным математически (и также самым быстрым), но еще не широко поддерживается. В качестве бонуса, он имеет более сильное шифрование (защита паролем) закрытого ключа по умолчанию, чем другие типы ключей. - RSA - лучшая ставка, если вы не можете использовать Ed25519. "
— Дэвид Тонхофер

Ах, ты прав. Я вижу это сейчас.
— Тодд Уолтон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.