La prima volta che ti connetti a un server, ti viene chiesto di accettare l'impronta digitale per l'host a cui ti stai connettendo. L'impronta digitale è una combinazione di una firma digitale, il nome host e l'indirizzo IP del server. Quando lo accetti, l'impronta digitale viene salvata in ~/.ssh/known_hosts
come host "fidato".
Per qualche motivo, l'impronta digitale del server è cambiata dalla prima volta che ci si è connessi. Ciò potrebbe essere dovuto al fatto che non è il server che ci si aspetta che sia, ad esempio quando la richiesta viene intercettata e reindirizzata su un altro server. Da qui l'avviso di sicurezza. La spiegazione potrebbe anche essere meno dannosa, ad esempio quando il server è stato sostituito / reinstallato senza ripristinare la sua firma digitale precedente o quando l'indirizzo IP è cambiato.
Se nonostante l'avviso di sicurezza, ti fidi ancora del server a cui ti stai connettendo, dovresti aprire ~/.ssh/known_hosts
e cercare la riga che inizia con l'indirizzo del server a cui ti stai connettendo. Rimuovere l'intera riga e salvare le modifiche, quindi riconnettersi al server. La prima volta che ti connetti, dovrebbe nuovamente richiedere di accettare l'impronta digitale aggiornata, dopo di che non dovresti avere più problemi di connessione a quell'host.
Il motivo per cui funziona con sudo
è perché in quelle condizioni lo stai facendo come utente diverso (root), e ogni utente ha il proprio file known_hosts (per root si trova a /private/var/root/.ssh/known_hosts
). root potrebbe non aver mai registrato l'impronta digitale precedente di quell'host e quindi non ha modo di confrontarlo con quello corrente e non c'è ragione di diffidare del server.