{"id":569,"date":"2010-02-10T22:45:14","date_gmt":"2010-02-10T22:45:14","guid":{"rendered":"http:\/\/blog.milamberspace.net\/?p=569"},"modified":"2010-02-10T23:03:54","modified_gmt":"2010-02-10T23:03:54","slug":"linux-executer-une-commande-avec-un-utilisateur-normal-en-tant-que-root-a-distance-sans-mot-de-passe-et-en-ssh","status":"publish","type":"post","link":"https:\/\/blog.milamberspace.net\/index.php\/2010\/02\/10\/linux-executer-une-commande-avec-un-utilisateur-normal-en-tant-que-root-a-distance-sans-mot-de-passe-et-en-ssh-569.html","title":{"rendered":"[Linux] Ex\u00e9cuter une commande avec un utilisateur normal en tant que root \u00e0 distance sans mot de passe et en SSH"},"content":{"rendered":"<p><em>Comment ex\u00e9cuter une commande root avec un utilisateur normal, \u00e0 distance et sans saisir de mot de passe, le tout en SSH entre deux machines Linux ?<\/em><\/p>\n<p><span style=\"text-decoration: underline;\">Voici une r\u00e9ponse :<\/span><\/p>\n<p><strong>Pour r\u00e9pondre \u00e0 la probl\u00e9matique du<em> \u00ab\u00a0\u00e0 distance sans saisir de mot de passe avec SSH\u00a0\u00bb<\/em><\/strong>, nous allons utiliser la notion de cl\u00e9 SSH.<\/p>\n<p>Sur le poste de travail Linux (le poste qui va lancer la commande \u00e0 distance), nous allons g\u00e9n\u00e9rer la cl\u00e9 SSH avec la commande suivante :<\/p>\n<pre>ssh-keygen -t dsa -f $HOME\/.ssh\/MON_LOGIN<\/pre>\n<p>Puis nous allons transf\u00e9rer la partie publique de la cl\u00e9, en utilisant l&rsquo;utilitaire ssh-copy-id :<\/p>\n<pre>ssh-copy-id MON_LOGIN@192.168.1.1<\/pre>\n<ul>\n<li>le MON_LOGIN peut \u00eatre remplac\u00e9 par un autre login.<!--more--><\/li>\n<\/ul>\n<p>Si jamais vous n&rsquo;avez pas l&rsquo;utilitaire ssh-copy-id, le transfert de la partie publique peut se faire &lsquo;manuellement&rsquo; avec la commande suivante :<\/p>\n<pre>scp $HOME\/.ssh\/MON_LOGIN.pub MON_LOGIN@192.168.1.1:\/home\/MON_LOGIN\/.ssh\/MON_LOGIN.pub<\/pre>\n<p>Puis en ssh sur la machine 192.168.1.1 :<\/p>\n<pre>cat \/home\/MON_LOGIN\/.ssh\/MON_LOGIN.pub &gt;&gt; \/home\/MON_LOGIN\/.ssh\/authorized_keys\r\nrm \/home\/MON_LOGIN\/.ssh\/MON_LOGIN.pub<\/pre>\n<p>Voil\u00e0, maintenant que la partie publique de la cl\u00e9 est sur la machine distance (192.168.1.1), il suffit de faire <strong>\u00ab\u00a0ssh 192.168.1.1\u00a0\u00bb<\/strong> pour \u00eatre directement connect\u00e9 sur la machine, en SSH, sans saisir de mot de passe.<\/p>\n<p>Si jamais on veut utiliser une autre cl\u00e9 SSH qui a un nom diff\u00e9rent du login, on peut pr\u00e9ciser le fichier de cl\u00e9 \u00e0 utiliser avec le param\u00e8tre \u00ab\u00a0-i\u00a0\u00bb. Par exemple :<\/p>\n<pre>ssh -i $HOME\/.ssh\/supervision supervision@192.168.1.1<\/pre>\n<p><strong>Pour r\u00e9pondre \u00e0 la question <em>\u00ab\u00a0en tant que root avec un utilisateur normal (et toujours) sans taper de mot de passe\u00a0\u00bb<\/em> :<\/strong><\/p>\n<p>Nous allons utiliser l&rsquo;outil sudo que vous devez certainement conna\u00eetre. Cet utilitaire permet \u00e0 utilisateur normal de lancer une commande en tant que root.<\/p>\n<p>Pour permettre \u00e0 cet utilisateur donn\u00e9 de lancer une commande donn\u00e9e sans saisir de mot de passe, nous allons op\u00e9rer sur la machine distante (192.168.1.1), en \u00e9ditant en tant que <strong>root<\/strong>, le fichier de configuration de sudo :<\/p>\n<pre>vi \/etc\/sudoers<\/pre>\n<p>A la fin du fichier, on ajoute la ligne suivante :<\/p>\n<pre>MON_LOGIN  ALL=NOPASSWD:\/usr\/sbin\/ma_commande<\/pre>\n<ul>\n<li>o\u00f9 MON_LOGIN est le login de l&rsquo;utilisateur qui doit ex\u00e9cuter la commande<\/li>\n<li>\/usr\/sbin\/ma_commande est la commande en question<\/li>\n<\/ul>\n<p>Maintenant, nous sommes pr\u00eats pour lancer la commande qui va r\u00e9pondre \u00e0 la question de ce billet.<\/p>\n<p>On se place sur la machine de lancement, et on saisit la commande suivante :<\/p>\n<pre>ssh -t MON_LOGIN@192.168.1.1 sudo \/usr\/sbin\/ma_commande param1 param2<\/pre>\n<p>o\u00f9 :<\/p>\n<ul>\n<li><em>-t<\/em> permet d&rsquo;\u00e9muler une pseudo console tty<em> (n\u00e9cessaire si le param\u00e8tre requiretty est activ\u00e9 dans le \/etc\/sudoers)<\/em><\/li>\n<li><em>MON_LOGIN@192.168.1.1 <\/em>correspond au login et la machine distante<\/li>\n<li>\u00ab\u00a0<em>sudo \/usr\/sbin\/ma_commande param1 param2 <\/em>\u00bb, la commande et ses param\u00e8tres \u00e0 ex\u00e9cuter sur la machine distante<\/li>\n<\/ul>\n<p><em>Et voil\u00e0<\/em>, nous avons la r\u00e9ponse.<\/p>\n<p>Pour finir, ne me demandez pas : \u00ab\u00a0A quoi cela sert de pouvoir faire cela ?\u00a0\u00bb, car soit vous en aurez besoin un jour si vous faites de l&rsquo;administration syst\u00e8mes et vous serez content de trouver ce billet, soit vous n&rsquo;en aurez jamais besoin&#8230; \ud83d\ude09<\/p>\n<p>.\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment ex\u00e9cuter une commande root avec un utilisateur normal, \u00e0 distance et sans saisir de mot de passe, le tout en SSH entre deux machines Linux ? Voici une r\u00e9ponse : Pour r\u00e9pondre \u00e0 la probl\u00e9matique du \u00ab\u00a0\u00e0 distance sans saisir de mot de passe avec SSH\u00a0\u00bb, nous allons utiliser la notion de cl\u00e9 SSH. &hellip; <a href=\"https:\/\/blog.milamberspace.net\/index.php\/2010\/02\/10\/linux-executer-une-commande-avec-un-utilisateur-normal-en-tant-que-root-a-distance-sans-mot-de-passe-et-en-ssh-569.html\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">[Linux] Ex\u00e9cuter une commande avec un utilisateur normal en tant que root \u00e0 distance sans mot de passe et en SSH<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,57,204],"tags":[316,205,206],"class_list":["post-569","post","type-post","status-publish","format-standard","hentry","category-linux","category-supervision","category-systemes","tag-linux","tag-ssh","tag-systeme"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/comments?post=569"}],"version-history":[{"count":9,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/569\/revisions"}],"predecessor-version":[{"id":577,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/569\/revisions\/577"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/categories?post=569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/tags?post=569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}