it-swarm.com.de

Wie ändere ich einen SSH-Hostschlüssel?

Ich habe einen Server geklont und sie haben den gleichen Fingerabdruck des RSA-Schlüssels.

Es scheint in /etc/ssh/ssh_Host_rsa_key.pub Definiert zu sein.

Was ist der richtige Weg, um das zu ändern?

Vielen Dank.

29

Befolgen Sie diese Schritte, um OpenSSH-Hostschlüssel neu zu generieren

  1. Alte ssh-Hostschlüssel löschen: rm /etc/ssh/ssh_Host_*
  2. Konfigurieren Sie OpenSSH Server neu: dpkg-reconfigure openssh-server
  3. Aktualisieren Sie alle SSH-Clients ~/.ssh/known_hosts Dateien

Referenz

23

Oder entfernen Sie die Schlüssel und

ssh-keygen -A

Erläuterung:

-A: Generieren Sie für jeden der Schlüsseltypen (rsa1, rsa, dsa, ecdsa und ed25519), für die keine Hostschlüssel vorhanden sind, die Hostschlüssel mit dem Standardpfad der Schlüsseldatei, einer leeren Passphrase und Standardbits für den Schlüsseltyp. und Standardkommentar. Dies wird von/etc/rc verwendet, um neue Hostschlüssel zu generieren.

32
philippe

Für eine generische Methode hierfür:

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

mix and Match entsprechend den Schlüsseln, die Ihre OpenSSH-Version unterstützt.

11
Olipro

Löschen Sie sie und starten Sie den SSHd-Dienst neu. Sie werden regeneriert.

1
Heis Spiter

Skript (falls ein Neustart des sshd-Daemons die Schlüssel nicht automatisch neu generiert)

#!/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
0
David Tonhofer