Come posso forzare SSH a fornire una chiave RSA anziché ECDSA?


16

Al primo accesso a un server, come posso forzare SSH a fornirmi la chiave RSA e memorizzarla automaticamente se l'utente lo approva?

Attualmente mi offre la chiave ECDSA. Poiché conosco già la chiave RSA, preferirei vedere la chiave RSA presentata a questo punto.

Ho provato:

ssh -o RSAAuthentication=yes user@server

Purtroppo questo mi dà una chiave ECDSA e il Are you sure you want to continue connecting (yes/no)?messaggio.


Ho una situazione simile. Server A. Client B. Su B: ssh A ti chiederà prima la chiave. Su Cleint C: ssh A per prima cosa ti chiederà passwrd, dopo un tentativo fallito nel tentativo del client C di usare la chiave ECDSA, ho visto questo nel registro di A. Se precarico la chiave rsa su C, allora ssh A si collegherà felicemente . Come posso impedire a C di utilizzare la chiave ECDSA come primo tentativo?
Kemin Zhou

Risposte:


14

Rimuovendo gli algoritmi ECDSA dalla HostKeyAlgorithmsvariabile di configurazione.

ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss user@server

Ho semplicemente rimosso tutti gli algoritmi ECDSA dall'elenco predefinito .

Ovviamente puoi metterlo nel tuo .ssh/configper quella macchina:

Host: server
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss

Per OpenSSL, 1) non ci sono due punti dopo l'host e 2) l'elenco predefinito sembra essere cambiato da quando lo hai pubblicato. Prova HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsainvece.
cowlinator,

6

Non utilizzare RSA poiché ECDSA è il nuovo valore predefinito.

Sul server fai questo: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub e registra quel numero.

Sul client è possibile SSH per l'host e se e quando si vede lo stesso numero, è possibile rispondere Are you sure you want to continue connecting (yes/no)?affermativamente al prompt . Quindi la chiave ECDSA verrà registrata sul client per uso futuro.


3
sì, ma che ne dici se ho una vecchia applicazione che ha bisogno di RSA per mantenere la compatibilità fino a quando non ci sarà una decisione aziendale di aggiornare a ecdsa?
enthusiasticgeek

@RobertSiemer solo il poster della domanda originale può modificare la risposta accettata. Non sono in grado di farlo.
enthusiasticgeek,

1
H2ONaCl: cambia la risposta accettata. Questo non fa quello che hai chiesto. @enthusiasticgeek scusa, confusione.
Robert Siemer,

Predefinito (appello all'autorità) e nuovo (appello alla novità) non significano necessariamente meglio. RSA è ancora considerato forte ... fino a 4096 se vuoi più forza (2048 potrebbe essere presto obsoleto). E se vuoi un buon algo CE, usa ed25519. L'ECDSA fa schifo perché usa curve NIST deboli che possono anche essere backdoor; questo è stato un problema ben noto per un po '. Quindi, per il supporto legacy, abilita RSA e, per un algoritmo ideale, usa ed25519 ... disabilita sempre DSA che è da tempo obsoleto (un motivo importante è la chiave a 1024 bit di dimensioni fisse) e disabilita anche ECDSA. Prova ssh-audit per di più.
Peter,

5

Sì, OK passa presto a ECDSA, ma nel frattempo prova questo:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com

Questo dà "Opzione di configurazione errata: fingerprinthash" sul mio sistema (OpenSSH_6.6.1p1).
Soren Bjornstad,

1
@SorenBjornstad, l' FingerprintHashopzione non è necessaria, basta lasciare l'intera parte fuori.
Lucas,

2

Ho appena aggiunto questa riga

HostKeyAlgorithms ssh-rsa

per

/etc/ssh/sshd_conf

e funziona bene in questa versione.

OpenSSH_7.7p2 ubuntu-4ubuntu2.2

1

Solo per migliorare la risposta di tumbleweed che contiene un link morto per trovare il vecchio elenco di algoritmi.

Prima di tutto, decidi un elenco di algoritmi. Per trovare il vecchio elenco, utilizzare ssh -vv:

ssh -vv somehost

E cerca le 2 righe come "algoritmi chiave host: ..." dove la prima sembra essere l'offerta del server e la seconda è quella del client. O per selezionare automaticamente quelle 2 linee, prova questo (e per uscire premi ctrl + d):

ssh -vv somehost 2>&1 | grep "host key algorithms:"

Ora filtralo ... dovresti rimuovere tutti quelli dss / dsa poiché sono obsoleti da tempo, e volevi anche rimuovere ecdsa (come faccio io), quindi per esempio se avessi:

ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Dovresti finire con:

ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Ora modifica la tua configurazione. Per la tua configurazione:

vim ~/.ssh/config

Per la configurazione del sistema:

sudo vim /etc/ssh/ssh_config

Aggiungi una nuova linea, a livello globale:

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

o per un host specifico (non ideale per la configurazione a livello di server):

Host somehost
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Invece dell'elenco che ho inserito, incolla l'elenco derivato ssh -vvdall'output, senza includere la parte "algoritmi chiave host:".


0

alcuni punti sono confusi in quanto è possibile rimuovere gli algoritmi delle chiavi dai valori predefiniti esistenti - Le chiavi di livello più alto sono le nuove chiavi RSA-sha2 / 256/512 ed ed25519 per la massima sicurezza utilizzando ssh-keygen -t ras -a -b 4096 -a 113 alla gen. A quanto pare, il supporto legacy sta leggendo le notizie ssh che ssh1 sarà totalmente sparito - anche le sue chiavi 45 bit e 96 bit max - dsa anch'esse ammortizzate verranno eliminate. È stato risolto su 128/1024 bit max trovato hackable. (poss l'NSA lo ha fatto e lame / scuse come codice di debug ha lasciato senza dubbio il rischio di nominarlo senza cuore), quindi tutte le strutture chiave RSA a pagamento ad alto costo devono essere rielaborate per supportare e mantenere standard più elevati in futuro. imposta quali chiavi vuoi usare come descritto in / etc / ssh / sshd_config prova anche a fare 2 chiavi auth 3 chiave funziona anche ad es .: sshd_config "AuthenticationMethods publickey, publickey, publickey" - assicurati che gli elenchi di ssh -Q kex corrispondano sia ai server A che ai desktop, ad esempio possibilmente fare una differenza sul loro output - e assicurati che gli stessi algoritmi chiave di eshng corrispondano. chiavi ecdsa più recenti nella produzione sono anche molto deboli da non usare. oppure get - keyexchange ha rifiutato l'accesso parziale sicuro msg. Un sacco di buone informazioni solo paziente per cercarlo.


2
Potresti provare a rompere questo muro di testo in modo che sia più facile da seguire? Si prega di utilizzare la guida alla formattazione e formattare il codice e il contenuto del file di testo come codice e, se chiarirà le cose, inserirle sulla propria riga. Modificherei volentieri la tua risposta se potessi seguirla, ma non posso.
Zanna,

-5

In alternativa, se si insiste sull'approccio della chiave RSA, è possibile digitare ssh-keygen -t rsasul server a cui si intende SSH.

Ciò dovrebbe generare le chiavi pubbliche e private RSA in "~ / .ssh / id_rsa". Ora tutto ciò che devi fare è copiare la chiave pubblica in $HOME/.ssh/authorized_keystutte quelle macchine da cui intendi eseguire il ssh sulla macchina su cui hai generato le tue chiavi RSA.

E poi siediti e rilassati!


1
Ti rendi conto che la domanda non riguardava la chiave lato client ma quella del server?
0xC0000022L
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.