Comment puis-je forcer SSH à donner une clé RSA au lieu de ECDSA?

16

Lors de la première connexion à un serveur, comment puis-je forcer SSH à me donner la clé RSA et à la stocker automatiquement si l'utilisateur l'approuve?

Actuellement, il me propose la clé ECDSA. Parce que je connais déjà la clé RSA, je préférerais voir la clé RSA présentée à ce stade.

J'ai essayé:

ssh -o RSAAuthentication=yes user@server

Malheureusement, cela me donne une clé ECDSA et le Are you sure you want to continue connecting (yes/no)?message.

H2ONaCl
la source
J'ai une situation similaire. Serveur A. Client B. Sur B: ssh A vous demandera d'abord la clé. Sur Cleint C: ssh A vous demandera d'abord passwrd, après l'échec de la tentative de client C d'utiliser la clé ECDSA, je l'ai vu dans le journal de A. Si je précharge la clé rsa sur C, alors ssh A se connectera avec bonheur . Comment empêcher C d'utiliser la clé ECDSA lors de la première tentative?
Kemin Zhou

Réponses:

14

En supprimant les algorithmes ECDSA de la HostKeyAlgorithmsvariable de configuration.

ssh -o [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss user@server

J'ai simplement supprimé tous les algorithmes ECDSA de la liste par défaut .

Vous pouvez, bien sûr, mettre cela dans votre .ssh/configpour cette machine:

Host: server
    HostKeyAlgorithms [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss
tumbleweed
la source
Pour OpenSSL, 1) il n'y a pas de deux-points après l'hôte et 2) la liste par défaut semble avoir changé depuis que vous avez posté cela. Essayez HostKeyAlgorithms [email protected],ssh-rsaplutôt.
cowlinator le
6

N'utilisez pas RSA car ECDSA est la nouvelle valeur par défaut.

Sur le serveur, procédez comme suit: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub et enregistrez ce numéro.

Sur le client, vous pouvez SSH vers l'hôte et si et quand vous voyez ce même numéro, vous pouvez répondre à l'invite par l' Are you sure you want to continue connecting (yes/no)?affirmative. Ensuite, la clé ECDSA sera enregistrée sur le client pour une utilisation future.

H2ONaCl
la source
3
oui, mais que diriez-vous si j'ai une ancienne application qui a besoin de RSA pour maintenir la compatibilité jusqu'à ce qu'il y ait une décision commerciale de mettre à jour vers ecdsa?
enthousiasticgeek
@RobertSiemer seule l'affiche originale de la question peut modifier la réponse acceptée. Je suis incapable de le faire.
enthousiastegege
1
H2ONaCl: veuillez modifier votre réponse acceptée. Celui-ci ne fait pas ce que vous avez demandé. @enthusiasticgeek désolé, mélange.
Robert Siemer
Défaut (appel à l'autorité) et nouveau (appel à la nouveauté) ne signifie pas nécessairement mieux. RSA est toujours considéré comme fort ... augmentez les bits à 4096 si vous voulez plus de force (2048 pourrait être obsolète bientôt). Et si vous voulez un bon algo EC, utilisez ed25519. ECDSA craint car il utilise des courbes NIST faibles qui sont peut-être même détournées; cela a été un problème bien connu pendant un certain temps. Donc, pour la prise en charge héritée, activez RSA, et pour un algo idéal, utilisez ed25519 ... désactivez toujours DSA qui est obsolète depuis longtemps (une raison principale est la clé fixe de 1024 bits) et désactivez également ECDSA. Essayez ssh-audit pour en savoir plus.
Peter
5

Oui, OK, passez bientôt à ECDSA, mais en attendant, essayez ceci:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 [email protected]
bonkydog
la source
Cela donne "Mauvaise option de configuration: fingerprinthash" sur mon système (OpenSSH_6.6.1p1).
Soren Bjornstad
1
@SorenBjornstad, l' FingerprintHashoption n'est pas nécessaire, laissez cette partie entière désactivée.
Lucas
2

Je viens d'ajouter cette ligne

HostKeyAlgorithms ssh-rsa

à

/etc/ssh/sshd_conf

et ça marche bien dans cette version.

OpenSSH_7.7p2 ubuntu-4ubuntu2.2
JEWEL AHMMED
la source
1

Juste pour améliorer la réponse de tumbleweed qui contient un lien mort pour trouver l'ancienne liste d'algorithmes.

Décidez d'abord d'une liste d'algorithmes. Pour retrouver l'ancienne liste, utilisez ssh -vv:

ssh -vv somehost

Et recherchez les 2 lignes comme "algorithmes de clé d'hôte: ..." où la première semble être l'offre du serveur, et la seconde est celle du client. Ou pour sélectionner automatiquement ces 2 lignes, essayez ceci (et pour quitter, appuyez sur ctrl + d):

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

Maintenant, filtrez-le ... vous devez supprimer tous les dss / dsa car ils sont obsolètes depuis longtemps, et vous vouliez également supprimer ecdsa (comme moi), donc par exemple si vous aviez:

[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Vous devriez vous retrouver avec:

[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Modifiez maintenant votre configuration. Pour votre propre configuration:

vim ~/.ssh/config

Pour la configuration à l'échelle du système:

sudo vim /etc/ssh/ssh_config

Ajoutez une nouvelle ligne, soit globalement:

HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

ou pour un hôte spécifique (pas idéal pour la configuration à l'échelle du serveur):

Host somehost
    HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Au lieu de la liste que j'ai entrée, collez la liste que vous avez dérivée de la ssh -vvsortie, sans inclure la partie "algorithmes de clé d'hôte:".

Peter
la source
0

certains points prêtent à confusion quant à la possibilité de supprimer les algorithmes de clé des valeurs par défaut existantes - Les clés de plus haut niveau sont les nouvelles clés RSA-sha2 / 256/512 et ed25519 pour une meilleure sécurité en utilisant ssh-keygen -t ras -a -b 4096 -a 113 à gen. Le support hérité est apparemment en train de lire ssh news que ssh1 aura totalement disparu - ses clés 45 bits et 96 bits max - dsa également dépréciées seront également éliminées. Son fixe sur 128/1024 bits max trouvé piratable. (poss NSA a fait cela et boiteux / excuse car le code de débogage laisse peu de doute que le nommer a du cœur) donc toutes les structures de clés RSA sécurisées et payantes doivent être retravaillées pour prendre en charge et maintenir des normes plus élevées à l'avenir. définissez les clés que vous souhaitez utiliser, comme décrit dans / etc / ssh / sshd_config, essayez également de faire fonctionner l'authentification à 2 clés, à savoir: sshd_config "AuthenticationMethods publickey, publickey, publickey" - assurez-vous que les listes ssh -Q kex correspondent à la fois aux serveurs A et B ou aux postes de travail, comme l'exemple peut faire une différence sur leur sortie - et assurez-vous que les mêmes algorithmes d'exhng clés correspondent. Les clés ecdsa plus récentes dans la production sont également kina faible suggèrent de ne pas utiliser. ou get - keyexchange a refusé l'accès partiel msg sécurisé. Beaucoup de bons infoz juste patient pour le rechercher.

atomic.kidd
la source
2
Pourriez-vous essayer de briser ce mur de texte pour qu'il soit plus facile à suivre? Veuillez utiliser le guide de formatage et formater le code et le contenu du fichier texte en tant que code, et si cela rend les choses plus claires, mettez-les sur leurs propres lignes. Je modifierais volontiers votre réponse moi-même si je pouvais la suivre, mais je ne peux pas.
Zanna du
-5

Ou, si vous insistez pour avoir l'approche par clé RSA, vous pouvez taper ssh-keygen -t rsasur le serveur sur lequel vous avez l'intention de SSH.

Cela devrait générer des clés publiques et privées RSA sous «~ / .ssh / id_rsa». Maintenant, tout ce que vous devez faire est de copier la clé publique $HOME/.ssh/authorized_keysde toutes les machines à partir desquelles vous avez l'intention de ssh sur la machine sur laquelle vous avez généré vos clés RSA.

Et puis asseyez-vous et détendez-vous!

Somujit
la source
1
Vous vous rendez compte que la question ne concernait pas la clé côté client mais la clé serveur?
0xC0000022L