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 27/02/2017, à 22: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, à 23: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, à 23:57)


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

Hors ligne

#3 Le 28/02/2017, à 00: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, à 01: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, à 01: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, à 10: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, à 13: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, à 14: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, à 18: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, à 22:38

jamesbad000

Re : Script shell + SSH + Sudo

Hizoka a écrit :
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, à 23: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, à 23:16

jamesbad000

Re : Script shell + SSH + Sudo

jamesbad000 a écrit :
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