Как изменить ключ хоста 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.

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

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

Heis Spiter
источник
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. "
Дэвид Тонхофер
Ах, ты прав. Я вижу это сейчас.
Тодд Уолтон