SSH with key only

Is it wise, doable and advisable to deny ssh login with passwords and disable admin login?

I’d like to add an extra layer of security by only allowing ssh login verification by ssh-keys and a user other then the default admin.

But is this advisable? Or might Yunohost behave erratically if I do that?
If so, What is the best way to achieve this?

Thnx!

It is doable and probably recommended (basically we don’t do this “by default” because it’s a whole mess to understand how to use keys for newcomers in the server world, rather than simply password - considering they’re already learning quite a lot of things)

You may simply edit /etc/ssh/sshd_config with the appropriate options. Just be aware that this configuration file then won’t be managed by YunoHost and you won’t automatically benefit from possible improvements in it …

So you may keep a look on the upgrade logs which might say something like “YunoHost wanted to update the file /etc/ssh/sshd_config but it was manually modified”. In which case, you can see the differences by running yunohost tools regen-conf ssh --dry-run -d (in 3.6, not yet release, otherwise it’s yunohost service regen-conf)

3 Likes

Français un peu plus bas :fr:

Hello

Setup : Distant server running Debian 9.12
Yunohost version : 3.7

I wanted to allow ssh connection only with ssh_key AND using passphrase. AT the moment it use an ssh key WITHOUT passphrase, meaning that anybody using my device can freely ssh the server.

I looked for adding passphrase to this key, and i saw several ssh keys, which seemed to be created at yunohost installation.

There are two questions :

  • Why Yuno created those keys ? (if it is really yuno which created them and not a mistake from me)
  • Is it possible to remove them or to add a passphrase to all of them without breaking yuno ?

Here is what /etc/ssh contain :

moduli ssh_host_ecdsa_key ssh_host_key.pub
ssh_config ssh_host_ecdsa_key.pub ssh_host_rsa_key
sshd_config ssh_host_ed25519_key ssh_host_rsa_key.pub
ssh_host_dsa_key ssh_host_ed25519_key.pub
ssh_host_dsa_key.pub ssh_host_key


:fr:
Je voulais me connecter en SSH uniquement via une clef ET un mot de passe. Pour le moment j’utilise l’identification par clef, mais sans mot de passe, ce qui implique que n’importe qui utilisant mon laptop/pc/whatever peut se connecter facilement en ssh à mon serveur distant.

J’ai donc voulu ajouter une passphrase à ma clef, et je me suis aperçu qu’il y en avait quelques unes, qui ont l’air d’être apparues lors de l’installation de yunohost.

J’ai donc deux questions :

  • Pourquoi yuno crée-t-il des clefs (à moins que ça ne soit pas le cas et que ce soit une erreur de ma part).
  • Peut-on supprimer ces clefs ou leur ajouter une passphrase sans ne rien casser ?

Voilà ce que j’ai dans /etc/ssh :

moduli ssh_host_ecdsa_key ssh_host_key.pub
ssh_config ssh_host_ecdsa_key.pub ssh_host_rsa_key
sshd_config ssh_host_ed25519_key ssh_host_rsa_key.pub
ssh_host_dsa_key ssh_host_ed25519_key.pub
ssh_host_dsa_key.pub ssh_host_key

Non il ne faut pas mettre des passphrases sur les clés d’authentification du serveur. Ces clés servent à authentifier qu’on est bien sur le bon serveur quand on s’y connecte.

Par contre il est fortement recommandé de mettre une passphrase sur ta clé qui est sur ton laptop.

Le jeu de clé privé/public sur ton laptop et le jeu de clé privé/public sur ton serveur dans /etc/ssh ne sont pas les même clés.

Merci pour le coup de main, je reste cependant un peu perdu.

Sur mon serveur, j’ai dans le dossier ~/.ssh les fichiers suivants : authorized_keys2 id_rsa id_rsa.pub

Jusque là ok.

Sur mon laptop, je retrouve le même type de chose : id_rsa id_rsa.pub known_hosts known_hosts.old

J’ai ajouté une passphrase à id_rsa sur mon laptop.

kit@6730B:~/.ssh$ ssh-keygen -p -f id_rsa
Key has comment ‘kit@6730B’
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.

Cependant, j’entre toujours sans rien avoir à taper sur mon serveur. J’en déduit que j’ai dû me planter quelque part.

Edith : Autant pour moi, il fallait redémarrer le service sur le laptop
Ca marche, ssh me demande bien d’entrer une clef !

Merci beaucoup :slight_smile:

C’est parce que tu as un ssh-agent qui enregistre temporairement ta clé déchiffrée pour éviter que tu ais à tapper systèmatiquement ta passphrase. Enfin je pense.

Oui c’est ce que j’ai constaté (déchiffrement au premier usage puis c’est open-bar pour toute la durée de la session).

Je n’ai aucune connaissance là dessus, faut que je creuse, c’est drôlement interessant.

Ce qui m’amène à une question sur les bonnes pratiques : ayant plusieurs appareils susceptibles d’aller ssh le serveur (laptop, desktop…), est-il recommandé de multiplier les clefs ou de simplement dupliquer la même clef sur toutes les machines dont j’ai besoin ? J’aurais tendance à privilégier la première solution qui me semble plus propre et permettra de révoquer la clef d’un appareil compromis.

@Kit personnellement j’ai une clé différente pour mon laptop et mon desktop.

L’avantage c’est que si on te vole ta machine tu peux effectivement enlever la clé de la machine perdue des autorized_keys.

J’ai aussi des clé distinctes en fonction du type de serveur auquel j’accède (comme ça je n’active pas tous le temps les clés dans ma session).

Mes clés ont une passphrase et de toute façon mes disques dur sont chiffrés.

Précision: c’est mon métier, donc ça implique un peu plus que juste les données mon serveur perso. La sécurité doit être fonction du risque.

Testé et approuvé, j’ai créé une seconde clef sur mon laptop (Linux) puis l’ai transferé sur mon Desktop (Win10).

Merci pour l’aide :smile: