Jak zmienić klucz hosta SSH?


23

Sklonowałem serwer, więc mają ten sam odcisk klucza RSA.

Wydaje się, że jest zdefiniowany w /etc/ssh/ssh_host_rsa_key.pub.

Jaki jest właściwy sposób, aby to zmienić?

Dzięki.

Odpowiedzi:


23

Lub usuń klucze i

ssh-keygen -A

Wyjaśnienie:

-A: Dla każdego z typów kluczy (rsa1, rsa, dsa, ecdsa i ed25519), dla których klucze hosta nie istnieją, wygeneruj klucze hosta z domyślną ścieżką pliku kluczy, pustym hasłem, domyślnymi bitami dla typu klucza i domyślnymi komentarz. Jest to używane przez / etc / rc do generowania nowych kluczy hosta.


Tagi OP określają debian, ale ponieważ nie są specyficzne dla platformy, ta odpowiedź wydaje się lepszym rozwiązaniem.
mc0e

Hmm, z wyjątkiem tego, że nie działa w starszych wersjach. Np. Kończy się niepowodzeniem przy ściśnięciu Debiana, który ma OpenSSH_5.5p1
mc0e

1
Dla twojej informacji (z manpagez.com/man/1/ssh-keygen ) wykonajssh-keygen -A następujące czynności: „Dla każdego z typów kluczy (rsa1, rsa, dsa, ecdsa i ed25519), dla których klucze hosta nie istnieją, wygeneruj host klucze z domyślną ścieżką do pliku kluczy, pustym hasłem, domyślnymi bitami dla typu klucza i domyślnym komentarzem. Jest to używane przez / etc / rc do generowania nowych kluczy hosta. "
Rabarberski,

19

Wykonaj poniższe czynności, aby ponownie wygenerować klucze hosta OpenSSH

  1. Usuń stare klucze hosta ssh: rm /etc/ssh/ssh_host_*
  2. Ponownie skonfiguruj serwer OpenSSH: dpkg-reconfigure openssh-server
  3. Zaktualizuj wszystkie ~/.ssh/known_hostspliki klientów ssh

Odniesienie


8

Aby uzyskać ogólną metodę:

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

mieszaj i dopasowuj zgodnie z kluczami obsługiwanymi przez twoją wersję OpenSSH.


1
Myślę, że jednym ze sposobów na poprawienie tego pytania byłoby dodanie sposobu na zwiększenie liczby bitów. tj.ssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
Whitecat,

0

Usuń je i uruchom ponownie usługę SSHd. Zostaną zregenerowane.


1
Nie, to nie działa. /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
Pascal Polleunus

1
W rzeczy samej. Działa tylko na dystrybucjach opartych na RHEL. Przepraszamy
Heis Spiter

Dobra rada, dzięki. To działało dla mnie przy instalacji CentOS.
George Gaál,

Zdecydowanie działa na Fedorze
David Tonhofer,

0

Skrypt (w przypadku ponownego uruchomienia demona sshd nie następuje automatyczne ponowne wygenerowanie kluczy)

#!/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

Link w komentarzu nie mówi, że ECDSA nie powinien być używany.
Todd Walton

@ToddWalton Właściwie to robi. Trzecia odpowiedź w sekwencji: „- Nigdy nie używaj DSA ani ECDSA. - Ed25519 jest prawdopodobnie najsilniejszym matematycznie (i także najszybszym), ale jeszcze nie jest szeroko obsługiwany. Jako bonus ma silniejsze szyfrowanie (ochronę hasłem) klucza prywatnego domyślnie niż inne kluczowe typy. - RSA jest najlepszym wyborem, jeśli nie możesz używać Ed25519. ”
David Tonhofer

Ach, masz rację. Teraz to widzę.
Todd Walton
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.