Come modificare una chiave host SSH?


23

Ho clonato un server e quindi hanno la stessa impronta digitale della chiave RSA.

Sembra essere definito in /etc/ssh/ssh_host_rsa_key.pub.

Qual è il modo corretto di cambiarlo?

Grazie.

Risposte:


23

Oppure, rimuovere le chiavi e

ssh-keygen -A

Spiegazione:

-A: Per ciascuno dei tipi di chiave (rsa1, rsa, dsa, ecdsa ed ed25519) per i quali non esistono chiavi host, genera le chiavi host con il percorso del file delle chiavi predefinito, una passphrase vuota, bit predefiniti per il tipo di chiave e impostazione predefinita commento. Questo è usato da / etc / rc per generare nuove chiavi host.


I tag del PO specificano debian, ma non essendo specifico per la piattaforma, questa risposta sembra la soluzione migliore.
mc0e

Hmm, tranne che non sembra funzionare per le versioni precedenti. Ad esempio, il debian squeeze non riesce, che ha OpenSSH_5.5p1
mc0e

1
Per tua informazione (da manpagez.com/man/1/ssh-keygen ) procedissh-keygen -A come segue: "Per ciascuno dei tipi di chiave (rsa1, rsa, dsa, ecdsa ed ed25519) per i quali non esistono chiavi host, genera l'host chiavi con il percorso del file chiave predefinito, una passphrase vuota, bit predefiniti per il tipo di chiave e commento predefinito. Questo è usato da / etc / rc per generare nuove chiavi host. "
Rabarberski,

19

Attenersi alla seguente procedura per rigenerare le chiavi host OpenSSH

  1. Elimina le vecchie chiavi host ssh: rm /etc/ssh/ssh_host_*
  2. Riconfigurare il server OpenSSH: dpkg-reconfigure openssh-server
  3. Aggiorna tutti i ~/.ssh/known_hostsfile dei client ssh

Riferimento


8

Per un metodo generico per fare ciò:

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

mescola e abbina in base ai tasti supportati dalla tua versione di OpenSSH.


1
Penso che un modo per migliorare questa domanda sarebbe quello di aggiungere il modo di aumentare il numero di bit. vale a diressh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
Whitecat,

0

Eliminali e riavvia il servizio SSHd. Saranno rigenerati.


1
No, non funziona. /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
Infatti. Funziona solo su distribuzioni basate su RHEL. Siamo spiacenti
Heis Spiter il

Un buon consiglio, grazie. Ha funzionato per me sull'installazione di CentOS.
George Gaál,

Sicuramente funziona su Fedora
David Tonhofer il

0

Script (nel caso in cui il riavvio del demone sshd non rigenera automaticamente le chiavi)

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

Il link nel tuo commento non dice che ECDSA non dovrebbe essere usato.
Todd Walton,

@ToddWalton In realtà lo fa. Terza risposta in sequenza: "- Non usare mai DSA o ECDSA. - Ed25519 è probabilmente il più forte matematicamente (e anche il più veloce), ma non ancora ampiamente supportato. Come bonus, ha una crittografia più forte (protezione con password) della chiave privata per impostazione predefinita rispetto ad altri tipi di chiave. - RSA è la soluzione migliore se non è possibile utilizzare Ed25519. "
David Tonhofer,

Ah, hai ragione. Ora lo vedo.
Todd Walton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.