Як змінити хост-ключ 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-клієнтів

Довідково


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.