Forum général.général Limiter les commandes à une clé ssh
Je me souviens d'avoir vu passé ici qu'il était possible d'associer un
jeu limité de commandes à une paire de clé ssh. Mon idée est
d'utiliser une clé sans mot de passe qui n'autorise à exécuter que mon
script de sauvegarde par rsync.
Comme je ne retrouve pas l'info quelqu'un pourrait m'aider ?
# rssh
Posté par Old Geek . Évalué à 1.
Je te conseille de regarder du coté de rssh.
Nicolas.
[^] # Re: rssh
Posté par aurel (site web personnel, Mastodon) . Évalué à 1.
# Match User + ForceCommand
Posté par Ellendhel (site web personnel) . Évalué à 4.
# authprogs
Posté par dood . Évalué à 2.
Il y a quelque temps j'avais trouvé authprogs, un script perl qui permet de limiter par utilisateur les commandes utilisables lors d'une connexion ssh.
Le script et la documentation sont là : http://www.hackinglinuxexposed.com/tools/authprogs/src/authp(...)
Guilhelm
# command=
Posté par castorpilot . Évalué à 6.
On lit dans man sshd :
"This option might be useful to restrict certain public keys to perform just a specific operation. An example might be a key that permits remote backups but nothing else. "
ça me semble etre exactement ton cas !
exemple :
---- authorized_keys ----
command="ls" ssh-rsa AAAB3NzaC1yc2EAAAABIwAAAQEA7qpkG [...]
[^] # Re: command=
Posté par François (site web personnel) . Évalué à 1.
# clef shh a usage unique ( pour executer un nb restreint de commande )
Posté par RougeMan . Évalué à 2.
Sur la machine initiatrice de la communication, il faut générer une paire de clefs, dans
le répertoire '.ssh' de l'utilisateur.
cd ~/.ssh
ssh-keygen -t dsa -f clef_perso
Veillez à ne laisser que les droits 600 ( rw------- ) pour la clef privée.
Sur la machine destination de la communication, il faut ajouter la clef publique ~/.ssh/clef_perso.pub obtenue
précédement au fichier ~/.ssh/authorized_keys
ou ~/.ssh/authorized_keys2 précédée de :
command="/qqpart/.ssh/le_script_a_executer",no-port-forwarding,no-X11-forwarding,no-agent-forwarding
ou
from="une.addresse.ip.emettrice,une.autre.adresse.ip",command="/qqpart/.ssh/le_script_generique_de_validation_de_commande.sh"
ou un mélange des deux
Un script de validation de commande pour faire des rsync
ou des scp peut prendre la forme :
#!/bin/bash
#
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Refuse"
;;
*\(*)
echo "Refuse"
;;
*\{*)
echo "Refuse"
;;
*\;*)
echo "Refuse"
;;
*\<*)
echo "Refuse"
;;
*\`*)
echo "Refuse"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
scp\ -f\ /chemin/fichier_a_copier)
$SSH_ORIGINAL_COMMAND
;;
ls\ /usrtmp)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Refuse"
;;
esac
Dans le script ci-dessus on a autorisé l'utilisation de rsync , la copie d'un fichier et une commande "ls" bidon.
Les BackSlash servent à quotter les espaces.
Le fichier authorized_keys aura les droits 600 (rw-------) , et le fichier de validation 700 (rwx------)
Pour faire une commande ssh ou scp ou rsync utilisant ces clefs à usage unique il suffit d'utiliser l'option -i.
ssh usager_distant@machine_distante -i /home_de_l_usager_local/.ssh/clef_perso commande_ou_script
scp -i /home_de_l_usager_local/.ssh/clef_perso /chemin/fichier_local usager_distant@machine_distante:/chemin/.
rsync -arv -e "ssh -i /home_de_l_usager_local/.ssh/clef_perso" /chemin/repertoire/source/local/ usager_distant@machine_distante:/repertoire/distant/
[^] # Re: clef shh a usage unique ( pour executer un nb restreint de commande
Posté par François (site web personnel) . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.