Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/09/2023, à 09:16

Hizoka

[Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Bonjour,

je voudrais permettre une connexion ssh entre un minipc qui me sert de serveur domotique et mon pc afin d'envoyer une commande d’arrêt via ssh.

Afin d’éviter tout souci, je me dis qu'il faudrait que l'user utilisait pour la connexion ssh ne devrait pouvoir qu’éteindre le pc.

Une idée de comment faire ça ?

Merci

Dernière modification par Hizoka (Le 18/09/2023, à 12:36)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 18/09/2023, à 09:45

bruno

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Bonjour,

Il suffit de mettre la commande à exécuter dans le fichier authorized_keys.

En ligne

#3 Le 18/09/2023, à 12:36

Hizoka

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Merci beaucoup !
Je ne savais pas que c'était possible, la doc n'en parle pas.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 18/09/2023, à 12:48

bruno

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

La doc en parle wink

man sshd a écrit :

     command="command"
             Specifies that the command is executed whenever this key is used for authentication.  The command supplied
             by the user (if any) is ignored.  The command is run on a pty if the client requests a pty; otherwise it is
             run without a tty.  If an 8-bit clean channel is required, one must not request a pty or should specify
             no-pty.  A quote may be included in the command by quoting it with a backslash.

             This option might be useful to restrict certain public keys to perform just a specific operation.  An exam‐
             ple might be a key that permits remote backups but nothing else.  Note that the client may specify TCP
             and/or X11 forwarding unless they are explicitly prohibited, e.g. using the restrict key option.

             The command originally supplied by the client is available in the SSH_ORIGINAL_COMMAND environment vari‐
             able.  Note that this option applies to shell, command or subsystem execution.  Also note that this command
             may be superseded by a sshd_config(5) ForceCommand directive.

             If a command is specified and a forced-command is embedded in a certificate used for authentication, then
             the certificate will be accepted only if the two commands are identical.


Je précise pour ceux qui tomberaient sur ce fil.
Il faut que l'utilisateur s'identifie sur le serveur uniquement par clés, voir la doc ssh.
Sur le serveur dans le dossier personnel de l'utilisateur il faut que le fichier ~/.ssh/authorized_keys contienne par exemple :

command="/usr/bin/systemctl poweroff" ssh-ed25519 AAAA……

Dernière modification par bruno (Le 18/09/2023, à 12:59)

En ligne

#5 Le 18/09/2023, à 23:20

Hizoka

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Je parlais de la doc du site wink


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 19/09/2023, à 08:46

bruno

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Je m'en doutais wink
C'était une façon détournée de rappeler que doc.ubuntu-fr.org n'est qu'un wiki collaboratif. Ce n'est en aucun cas une doc officielle. Ce n'est pas exhaustif, pas forcément à jour et peut contenir des erreurs.

En ligne

#7 Le 19/09/2023, à 09:50

Hizoka

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

y aurait moyen de permettre 2 commandes ?
Stop et restart ?
Il faudrait créer un autre user sur mon pc pour pouvoir y accéder avec une autre clé et donc une autre commande ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#8 Le 19/09/2023, à 10:07

bruno

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Hizoka a écrit :

y aurait moyen de permettre 2 commandes ?
Stop et restart ?

Je ne crois pas, non. Puisque la commande est exécutée lorsque l'utilisateur se connecte.

Hizoka a écrit :

Il faudrait créer un autre user sur mon pc pour pouvoir y accéder avec une autre clé et donc une autre commande ?

Cela peut être effectivement un moyen plus simple que de mettre en place un shell restreint pour un utilisateur (facilement contournable) ou mieux un environnement chroot.

En ligne

#9 Le 19/09/2023, à 13:50

Hizoka

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Au final, voici ce que j'ai fait :

Sur mon pc :

# Création des utilisateurs qui ne pourront que rebooter et arrêter le pc
sudo useradd ssh_reboot # Création de l'utilisateur ssh_reboot
sudo passwd ssh_reboot # Choix de son mot de passe
sudo mkdir -p /home/ssh_reboot # Création d'un dossier home complètement vide
sudo chown ssh_reboot:ssh_reboot /home/ssh_reboot # Modification des droits sur le dossier home

sudo useradd ssh_halt # Création de l'utilisateur ssh_halt
sudo passwd ssh_halt # Choix de son mot de passe
sudo mkdir -p /home/ssh_halt # Création d'un dossier home complètement vide
sudo chown ssh_halt:ssh_halt /home/ssh_halt # Modification des droits sur le dossier home

# Ajout des droits sudo sur systemctl pour ssh_halt et ssh_reboot
sudo visudo # Gestion des droits

# Ajout des lignes :
# Autorisation de reboot et d'arrêt du pc via le ssh
ssh_halt  ALL=NOPASSWD: /bin/systemctl
ssh_reboot  ALL=NOPASSWD: /bin/systemctl

Sur le pc qui exécutera les commandes :

# Connexion en ssh avec clé depuis un autre pc
ssh-copy-id ssh_reboot@adresse_ip_du_pc
ssh-copy-id ssh_halt@adresse_ip_du_pc

Sur mon pc :

# Modification des fichiers d'autorisation en y ajoutant les commandes autorisées
sudo sed -ri '1s/(.*)/command="sudo systemctl reboot --no-wall -i" \1/' /home/ssh_reboot/.ssh/authorized_keys
sudo sed -ri '1s/(.*)/command="sudo systemctl poweroff --no-wall -i" \1/' /home/ssh_halt/.ssh/authorized_keys

Du coup, il ne reste plus qu'à faire une connexion ssh depuis l'autre pc :

ssh ssh_reboot@adresse_ip_du_pc

ou

ssh ssh_halt@adresse_ip_du_pc

merci à vous smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#10 Le 19/09/2023, à 16:20

Watael

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

àmha, multiplier les utilisateurs avec des droits (sur tout systemctl), c'est au contraire multiplier les sources de problèmes.
si tu peux être sûr d'eux, tu dois pouvoir être sûr du compte root pour envoyer telle/telle commande (en argument à un script) au serveur.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 19/09/2023, à 22:14

Hizoka

Re : [Résolu] Création d'un user qui ne pourrait qu'eteindre le pc ?

Je suis pas trop chaud de créer un compte root pour mon pc...

Après, plutot que systemctl, je peux donner les droits à shutdown et reboot qui sont plus limité non ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne