Salut (et désolé, je n’avais pas vu le post).
Il faut voir comment fonctionne yunohost settings, mais dans les grandes lignes, après avoir modifié un fichier de configuration, il faut recharger la config.
Hors commandes spécifiques à yunohost, les fichiers de config SSH se trouve dans /etc/ssh, et notamment /etc/ssh/sshd_config qui est managé par Yunohost, et où on retrouve le port et les lignes suivantes :
# PLEASE: if you wish to force everybody to authenticate using ssh keys, run this command:
# yunohost settings set security.ssh.ssh_password_authentication -v no
PasswordAuthentication no
Si cette ligne est à yes, alors tu peux toujours te logguer en utilisant un mot de passe.
Attention, si tu la passe à no, vérifie bien que la ligne PubkeyAuthentication yes est bien à yes, sinon tu risque de t’enferme dehors.
Si tout est ok, tu peux faire un yunohost service reload_or_restart sshpour recharger la config.
Pour répondre aux questions :
sudo yunohost settings set security.ssh.ssh_password_authentication -v no
Avant : Parce que je ne vois pas comment faire si on a déjà modifié le port SSH ?
Après : Parce que, là aussi, que doit-on faire après avoir utilisé la commande ?
→ Le choix du port SSH est décorrélé de la façon de s’y connecter (par password ou clef)
→ Voir si-dessus pour ce qu’il faut faire après avoir modifier les fichiers de conf. Attention, je déconseille de jouer à la fois avec les commandes yunohostet de faire des modifs manuellement.
Tu peux aussi mettre la commande dans un hook de regen-conf si tu veux conserver une config modifiée :
#!/bin/bash
# A placer dans /etc/yunohost/hooks.d/conf_regen/
# Yunohost et SSH : voir https://yunohost.org/en/ssh
# Yunohost et Sécurité : voir https://yunohost.org/en/security
# Spécificités Yunohost
action=$1 # Sommes-nous en train de faire l'étape "pre" ou "post" ?
pending_dir=$4 # Il s'agit du dossier dans lequel sont stockés les conf "pending"
# Dans cet exemple, il s'agit de surcharger la conf SSH ... qui est en fait dans `$pending_dir/../ssh` (généré par le hook ssh "de base") ... puis ensuite il s'agit d'une arborescende unix-like classique avec `etc/ssh/sshd_config` ...
ssh_conf=$pending_dir/../ssh/etc/ssh/sshd_config
# Si on est pas dans l'action pre, on sort tout de suite car on ne veut rien faire de spécial dans l'action post
[[ "$action" == "pre" ]] || exit 0
# Si le fichier à override n'existe pas ... on quitte sans rien faire de spécial. Cette ligne n'est pas ultra importante
[[ -e "$ssh_conf" ]] || exit 0
# Variables
USERS=(user) # liste des utilisateurs, à séparer par des espaces.
PORT=12345 # Port SSH (22 par défaut)
PWD=False # (True|False) : True pour autoriser l'authentification par mot de passe, False pour forcer l'authentification par clef
COMPATIBILITY=modern # (intermediate|modern) # Gestion de TLS 1.2, voir https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29
for i in "${USERS[@]}" # on boucle sur les différents utilisateurs de l'array USERS
do
if [[ $(yunohost user list | grep "username: $i") != "" ]];then # si le user est un user yunohost
if [[ $(getent group ssh.main | grep $i) == "" ]]; then #Si le user n'appartient pas au groupe LDAP ssh
yunohost user permission add ssh $i #on ajoute le user au groupe ssh.main (groupe LDAP)
fi
elif [[ $(getent group ssh.app | grep $i) == "" ]]; then #Si l'utilisateur n'appartient pas au groupe UNIX ssh
usermod -a -G ssh.app $i #on ajoute le user au groupe ssh.app (groupe UNIX)
fi
done
# MaJ du port ssh
if [[ $(grep "Port $PORT" /etc/ssh/sshd_config) == "" ]]; then #test si le port ssh correspond à celui de la variable $PORT
yunohost settings set security.ssh.ssh_port -v $PORT
fi
# Révocation de la possibilité de se connecter avec un password.
#****** /!\ si $PWD=False, assurez vous d'avoir au préalable ajouté une clef à vos users ! /!\ ******
if [[ $(yunohost settings get security.ssh.ssh_password_authentication) != "$PWD" ]]; then #test si la possibilité se connecter en SSH avec un mot de passe correspond à la variable $PWD
if [[ $PWD == "False" ]]; then
yunohost settings set security.ssh.ssh_password_authentication -v no #on force l'authentification par clef
elif [[ $PWD == "True" ]]; then
yunohost settings set security.ssh.ssh_password_authentication -v yes #on autorise l'authentification par mot de passe
fi
fi
# Gestion TLS 1.2
if [[ $(yunohost settings get security.ssh.ssh_compatibility) != "$COMPATIBILITY" ]]; then #test si on est déjà dans le mode de compatibilité voulu
yunohost settings set security.ssh.ssh_compatibility -v $COMPATIBILITY
Pour faire du GeoIP sur SSH, ça me semble peu utile si obligation de s’authentifier avec une clef.
Je ne suis pas certains d’avoir vraiment répondu à tes questions, n’hésites pas si je suis à côté 