SSH - Public Key Auth - ssh-dss

Me ne sono accorto solamente ora, con un paio d'anni di ritardo, provando a connettermi a un computer con Ubuntu 16.04.2: a partire dalla versione 7.0, OpenSSH non supporta più le chiavi ssh-dss (dsa) nell'autenticazione con chiave pubblica, per non meglio precisate (leggi, da me non comprensibili) motivazioni di sicurezza.

https://www.gentoo.org/support/news-items/2015-08-13-openssh-weak-keys.html

Volendo comunque continuare a utilizzare le chiavi dss, sono state introdotte delle impostazioni legacy:

http://www.openssh.com/legacy.html

In sisntesi
Client con OpenSSH 7.0+

  • In ~/.ssh/config per un singolo host

  •  In ~/.ssh/config per tutti gli host

  • Oppure in /etc/ssh/ssh_config per tutti gli host e tutti gli utenti

Server con OpenSSH 7.0+

  • Globalmente in /etc/ssh/sshd_config, in fondo nella sezione
    Host *


In ogni caso il consiglio migliore è quello di cambiare tipologia di chiavi di cifratura, andandole a rigenerare sul client, e a copiare quelle pubbliche sui server. E' una procedura molto semplice e veloce.

  • Chiavi RSA. Di default vengono create a 2048bit che è sufficiente (si può cambiare la dimensione col paramentro -b 4096) . Massima compatibilità.

  • Chiavi ed25519. Forse un po' più sicure e veloci, ma meno universalmente utilizzate (disponibili solo da OpenSSH 6.5+).

Qui un approfondimento su quale tipo di chiavi usare
https://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys

Io ho generato sia la coppia di chiavi rsa che la coppia di chiavi ed25519, eliminando quelle dss/dsa.

Per forzare l'utilizzo di una chiave specifica, quando dal client ci si collega a un server che accetta più di una chiave privata (e conosce più di una chiave pubblica), si può procedere così:

  • Da riga di comando, forzando ed25519

  • Anando a modificare il file (sempre sul client)

~/.ssh/config (permessi a 644 massimo)

In questo modo, quando il client si connette a server.domain.com, utilizzerà di default la chiave ed25519.

In assenza di questa configurazione, come prima possibilità, il client invia sempre la chiave rsa e non c'è modo di cambiare globalmente l'ordine (almeno, io non ho capito come si possa fare).

Sul server ovviamente devono esserci le chiavi pubbliche del tipo corrispondente in authorized_keys: in tutto l'articolo ho dato per scontato che la procedura fosse nota.


Qui un'ottima guida:

https://wiki.archlinux.org/index.php/SSH_keys#Choosing_the_authentication_key_type


CENTOS 7.3.1611

  • Versione

  • Chiavi supportate


Volendo forzare per un determinato utente o gruppo l'utilizzo della sola autenticazione a chiave pubblica, lasciando agli altri la possibilità di collegarsi anche con password:

  • Sul server in /etc/sshd/sshd_config

In questo modo, quando utente del gruppo pincopallo cerca di collegarsi al server senza passare la coppia di chiavi:

 

Print Friendly, PDF & Email