Pages : 1
#1 Le 27/02/2017, à 21:27
- alacran35
Script shell + SSH + Sudo
Bonjour,
Je souhaite écrire un script (shell à priori) pour éteindre mon NAS Synology de manière automatique.
Je m'explique
J'ai un domoticz qui tourne sur mon raspberry.
Je voudrais pouvoir lancer un script SHell qui ferait:
ssh user@IP_NAS 'sudo shutdown -h now'
J'ai mis la clé publique de mon raspberry sur mon NAS, donc la connexion SSH sur le NAS est automatique.
Par contre, et c'est normal, lorsque le script se lance, j'ai une invit de commande pour rentrer le mot de passe sudo de mon NAS.
Mais je voudrais pouvoir passer le mot de passe en paramètre du script si c'est possible...
Où alors, si c'est plus simple (je ne sais pas, je n'arrive à faire aucun des deux ^^), c'est que le SSH lance un script qui se trouverait sur mon NAS et qui ferait exactement la même chose...
Des idées?
Merci
Hors ligne
#2 Le 27/02/2017, à 22:55
- Hizoka
Re : Script shell + SSH + Sudo
Salut,
il faudrait utiliser un système de clé : https://doc.ubuntu-fr.org/ssh#authentification si ton Synology fonctionne.
car mettre un mot de passe en clair est.... une mauvaise idée.
Dernière modification par Hizoka (Le 27/02/2017, à 22:57)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 27/02/2017, à 23:17
- alacran35
Re : Script shell + SSH + Sudo
Le lien que tu m'as mis, c'est pour l'authentification SSH. Moi ca fonctionne l'authentification SSH.
Effectivement, j'ai mis ma clé publique, comme je l'ai dit plus haut, sur mon NAS.
Donc quand je me connecte en SSH, on ne me demande pas de mot de passe (donc pas de mot de passe en clair).
Mais c'est quand je veux passer une commande sudo que le password root du NAS est demandé.
Ton lien ne permet pas de contourner/résoudre le problème.
Où alors, j'ai mal compris, dans ce cas si tu peux m'expliquer stp...
Merci
Hors ligne
#4 Le 28/02/2017, à 00:16
- jamesbad000
Re : Script shell + SSH + Sudo
Bonsoir.
Il faut créer une paire de clef pour le compte root sur la machine source et autoriser la clef public sur le compte root de la machine cible.
Lancer le process qui déclenchera ssh en root. Ainsi il pourra accéder aux clef de root et se connecter directement en root sur la machine distante, avec un minimum de compromission de la sécurité...
Dernière modification par jamesbad000 (Le 28/02/2017, à 00:21)
L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)
Hors ligne
#5 Le 28/02/2017, à 09:05
- Hizoka
Re : Script shell + SSH + Sudo
Ha ok, j'avais mal compris, désolé.
Perso je me connecte en root avec ma paire de clé et du coup pas besoin de code root.
jamesbad000 => + 1
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 28/02/2017, à 12:09
- alacran35
Re : Script shell + SSH + Sudo
C'est ce que j'ai faut Jamesbad000.
Quand je me connecte en ssh avec un compte admin (c'est pareil que root non?), je me connecte bien automatiquement, sans mot de passe.
Mais quand, une fois connecté, je veux lancer une commande en "sudo", il me demande un mot de passe.
J'ai l'impression que là, vous me parlez de clé pour me connecter, mais pas de clé pour exécuter des commandes sudo.
Ou alors, je ne comprend rien.
SI vous pouviez me donner un peu plus de détails svp...
Merci
Hors ligne
#7 Le 28/02/2017, à 13:18
- soshy
Re : Script shell + SSH + Sudo
Quand je me connecte en ssh avec un compte admin (c'est pareil que root non?)
Non c'est pas pareil. Tu peux regarder le retour de la commande "qui suis-je ?"
whoami
sudo whoami
dans un cas tu es toi, dans l'autre tu es root. Donc pour éviter d'avoir a taper sudo pour passer root, tu peux directement faire:
ssh root@ip
Du coup, plus besoin de sudo, mais ça implique de pouvoir se connecter via ssh directement en tant que root.
Hors ligne
#8 Le 28/02/2017, à 17:23
- Hizoka
Re : Script shell + SSH + Sudo
N'hesite pas à lire la doc, y a plein d'infos dedans.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#9 Le 28/02/2017, à 21:38
- jamesbad000
Re : Script shell + SSH + Sudo
ssh root@ip
En principe sous cette forme ça ne doit pas fonctionner.
Edit ci-dessous la méthode la plus sur, mais plus compliqué à mettre en oeuvre.
Sinon voir mon post suivant
tentative de connexion en sudo, demande le mot de passe local, et après connexion sans demander le mot de passe du root distant
fred@Extensa:~$ sudo ssh root@192.168.1.3
[sudo] password for fred:
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-110-generic x86_64)
Last login: Tue Feb 28 20:52:11 2017 from 192.168.1.45
root@Miragek1404:~#
tu me diras, il faut rentrer un mot de passe quand même.
Mais si la commande ssh est dans un script qui attend quelque chose, il suffit d'avoir lancé le script en sudo. Pas besoins de rentrer le mot de passe au moment de la connexion.
Et si le script est lancé depuis le cron, ou automatiquement au démarrage, il tourne déjà en root.
Donc créer la paire de clef privée/publique dans /root/.ssh de la machine source
sudo ssh-keygen
Puis copier le contenu de
/root/.ssh/id_rsa.pub
de la machine source, dans
/root/.ssh/authorized_keys
de la machine cible.
Dernière modification par jamesbad000 (Le 28/02/2017, à 22:22)
L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)
Hors ligne
#10 Le 28/02/2017, à 22:16
- jamesbad000
Re : Script shell + SSH + Sudo
Hizoka a écrit :ssh root@ip
En principe sous cette forme ça ne doit pas fonctionner.
Autant pour moi ! evidemment que ça peut fonctionner. Même si je répugne par principe a avoir directement sur mon compte une clef donnant accès à un compte root.
Ce qu'il faut c'est tout simplement autoriser ta clef publique sur le compte root de la machine distante.
(la copier dans /root/.ssh/authorized_keys de la machine distante)
L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)
Hors ligne