Ssh exécute une commande avec sudo sur un pc distant

Résolu/Fermé
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - Modifié le 3 févr. 2023 à 15:23
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 6 févr. 2023 à 13:27

Bonjour,

Je voudrais savoir si il est possible de combiner sshpass et ssh pour créer une connexion automatique qui exécute une commande avec sudo sur un PC distant.

genre :

sshpass -p 'mdp' ssh -t laurent@192.168.3.13 -p 22 'sudo -i -u  laurent  poweroff'

sshpass -p 'mdp' ssh -t laurent@192.168.3.13 -p 22 'pkexec  poweroff'

sshpass -p 'mdp' ssh -t laurent@192.168.3.13 -p 22 'sudo -i -u laurent -s lolo  bash /home/laurent/.script-bash/poweroff.sh'

le problème est qu'une fois le connexion sshpass établi il demande le mot de passe sudo du pc distant pour exécuter la commande, comment intégrer automatiquement le mot de passe sudo ?

Merci d'avance pour vos avis et conseils


Linux / Firefox 109.0

A voir également:

3 réponses

mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 7 799
Modifié le 3 févr. 2023 à 17:20

Bonjour,

Oui c'est possible. Par exemple pour exécuter ls /root sur la machine distante :

ssh laurent@192.168.3.13 sudo -S ls /root

Note qu'il faudra saisir le mot de passe pour se connecter en laurent via ssh (à moins que tu n'aies installé sur laurent@192.168.3.13 une clé ssh) puis son mot de passe sur cette machine (en admettant que laurent soit sudoer sur cette machine).

Par rapport aux trois commandes que tu proposes, je te déconseille vivement de passer le mot de passe en paramètre. Celui-ci sera leaké dans ton historique shell (en bash, voir la commande history) et visible dans la table des processus (voir la commande ps faux), et donc constitue une grosse faille de sécurité.

La manière propre de se connecter de manière transparent est d'utiliser une clé ssh. Une fois la clé générée (voir ssh-keygen) et déployée sur la machine distance (voir ssh-copy-id), tu peux activer ta clé ssh avec la commande ssh-add.

Bonne chance

0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
Modifié le 6 févr. 2023 à 13:18

Bonjour,

Je ne comprends pas, il me demande le mot de passe sudo

laurent@VALERIE-AMD-R7-2700X:~$ ssh laurent@192.168.3.13 sudo -S ls /root
laurent@192.168.3.13's password: 
[sudo] Mot de passe de laurent : 

également avec sshpass :

laurent@VALERIE-AMD-R7-2700X:~$ sshpass -p 'mdp' ssh -t laurent@192.168.3.13 -p 22 sudo -S ls /root
[sudo] Mot de passe de laurent : 

Oui j'ai forcement une clé ssh puisqu'il la crée à la toute première connexion.

Merci.

0
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 7 799
6 févr. 2023 à 13:27

Bonjour,

Oui j'ai forcement une clé ssh puisqu'il la crée à la toute première connexion.

Non lors de la première connexion, ce qu'il te demande c'est de valider l'identité du serveur (fingerprint). Ça n'a rien à voir avec une clé ssh. Je t'invite à consulter les liens que je t'ai donnés dans mon précédent message pour plus de détail, ça réglera le mot de passe lié à ssh.

également avec sshpass :

Note que dans ma réponse je parle de ssh, pas de sshpass. Je ne pense pas que ça change grand chose, mais personnellement je n'en ai jamais eu l'utilité.

il me demande le mot de passe sudo

C'est normal et inévitable à moins de fournir le mot de passe de sudo dans la ligne de commande, ce que je déconseille  par rapport aux règles de sécurité que j'ai énoncé plus haut. Autre solution (que je déconseille vivement) tu peux te connecter en ssh en root sous réserve d'autoriser au niveau de ssh les connexions en root.

Bonne chance

0