Copia le chiavi ssh da un server a un altro server


12

Ho un server (supponiamo che il suo ip sia abcd) che consenta agli utenti di accedere tramite ssh. Ora voglio cambiare la macchina fisica mantenendo lo stesso IP. In modo che la nuova macchina sia ancora accessibile da un utente come questo

$ ssh abcd

Il problema è che ogni volta che un utente tenta di accedere, viene visualizzato il seguente errore di mancata corrispondenza ssh-key.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ ATTENZIONE: L'IDENTIFICAZIONE DELL'HOST REMOTO È CAMBIATA! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
È POSSIBILE CHE QUALCUNO STA FACENDO QUALCOSA NASTY!
Qualcuno potrebbe averti intercettato in questo momento (attacco man-in-the-middle)!
È anche possibile che la chiave host RSA sia stata appena modificata.
L'impronta digitale per la chiave RSA inviata dall'host remoto è
02: dc: c6: 18: 1b: 34: b7: 1d: fa: 90: ab: e1: 95: 48: 69: 84.
Si prega di contattare l'amministratore di sistema.
Aggiungi la chiave host corretta in /home/user/.ssh/known_hosts per eliminare questo messaggio.
Chiave offensiva in /home/user/.ssh/known_hosts:37
La chiave host RSA per gli ex studenti è stata modificata e hai richiesto un controllo rigoroso.
Verifica chiave host non riuscita.

So che l'utente può eliminare la riga # 37 dal file ~ / .ssh / known_hosts e la prossima volta riceverà un prompt sì / no. Quello che voglio è che l'utente debba essere ignaro dell'intera cosa di sostituzione della macchina e ottenere solo una richiesta di password.

Come farlo?


3
Sei consapevole del fatto che ciò sconfiggerebbe sshl'unica protezione contro gli attacchi di tipo man in the middle e potrebbe comportare l'invio della password direttamente all'attaccante anziché alla macchina prevista? A meno che non si sappia per certo che si è invulnerabili ad attacchi attivi (ad esempio, ci si trova sulla stessa rete interna sicura della macchina target) questo distrugge sshil modello di sicurezza.
David Schwartz,

Sì. Entrambe le macchine si trovano nelle stesse reti interne. Anche gli utenti sono all'interno della stessa rete interna. Data questa situazione, quali sono le mie opzioni?
Souvik Pal

Questo non è abbastanza. Devono trovarsi nella stessa rete interna sicura . Cioè, devono assolutamente fidarsi al 100% che nessun dispositivo sia connesso a quella rete interna che non è sicura al 100% e devono fidarsi al 100% di tutti coloro che hanno il controllo su tali dispositivi o che possono collegare un dispositivo a quella rete. In altre parole, in quasi tutti gli scenari realistici, questa è una cattiva idea.
David Schwartz,

2
È una cosa perfettamente ragionevole da fare. Sto replicando le chiavi del server SSH su un altro server per HA in modo che quando accedo ottengo quegli errori. Inoltre ricevo una email in caso di failover.
Matt H

3
Sono d'accordo con Matt. Se hai il controllo di entrambe le macchine e quindi il proprietario delle chiavi, spostare la chiave host da una macchina all'altra sotto il tuo controllo NON È un uomo nel mezzo dell'attacco o del rischio. Se l'utente che si collega si fida della chiave host, non dovrebbe importare.
Ross

Risposte:


14

Come menzionato da Ethabell , è possibile copiare le chiavi host correnti sul nuovo server.

Puoi trovare le tue chiavi host aprendo il tuo sshd_configfile (nella mia casella Ubuntu 12.04 è /etc/ssh/sshd_config). Nel file di configurazione cercare le HostKeyvoci. Queste voci ti diranno dove si trovano i file della chiave host. Dovresti essere in grado di copiare questi file sul nuovo server e aggiornare quelli del nuovo server sshd_configin modo che puntino alle chiavi copiate (o semplicemente sovrascrivere i file già esistenti sul nuovo server).

Inoltre, nota questa sezione dalla sshd_configpagina man, in particolare la parte relativa alle autorizzazioni:

Specifica un file contenente una chiave host privata utilizzata da SSH. L'impostazione predefinita è /etc/ssh/ssh_host_keyper la versione del protocollo 1, e /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_keye /etc/ssh/ssh_host_rsa_keyper la versione del protocollo 2. Si noti che sshd (8) si rifiuta di utilizzare un file se si tratta di gruppo / world-accessibili. È possibile avere più file chiave host. Le chiavi "rsa1" sono utilizzate per la versione 1 e "dsa", "ecdsa" o "rsa" sono utilizzate per la versione 2 del protocollo SSH.


1

Se si disponesse della chiave host originale, è possibile ripristinarla e questo fermerebbe l'errore.

In alternativa, è possibile disattivare StrictHostKeyChecking nel file di configurazione sshd.

... Fare questo, tuttavia, è un'idea terribile, terribile. Se c'è un modo per eseguire solo ssh-keygen -R server.example.comsu macchine client, sarebbe il modo migliore, perché disattivare il controllo della chiave host è come dire "Ehi. Attaccami". Ottengo il desiderio di oscurità quando le cose cambiano, ma la sicurezza dovrebbe essere la priorità numero 1 rispetto ai cambiamenti oscuri.


Puoi approfondire come ripristinare le chiavi host sulla macchina più recente?
Souvik Pal

1

Puoi provarlo in questo modo

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"' 

Notare che se la cartella .ssh non esiste già, il comando sopra fallirà. Inoltre, potrebbe essere meglio durante la creazione del file impostare un'autorizzazione minima possibile (sostanzialmente leggere / scrivere solo per il proprietario). Ecco un comando più avanzato:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

Per ulteriori chiarimenti su questo problema, è necessario accedere a questo sito Web: Errore di modifica della chiave host SSH

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.