# Exercice ssh et sudo

**URL:** <https://www.debian-fr.org/t/exercice-ssh-et-sudo/71247>\
**Category:** Trucs et Astuces\
**Created:** [Octobre 7, 2016, 4:07 UTC](https://www.debian-fr.org/t/exercice-ssh-et-sudo/71247 "2016-10-07T16:07:08Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Octobre 7, 2016, 4:07 UTC](https://www.debian-fr.org/t/exercice-ssh-et-sudo/71247/1 "2016-10-07T16:07:08Z")

</div>

> [@Impossible de me servir de synaptic](https://www.debian-fr.org/t/impossible-de-me-servir-de-synaptic/71181/30):
>
> …  
> Pour vous faire pardonner, faites l’exercice (astuce du jour) avec la commande de votre choix, et trouvez un moyen d’envoyer des commandes privilégiées sur des machines distantes en combinant les commandes sudo et ssh 😉
> 
> Un indice :
> 
> ```auto
> env | fgrep SSH
> 
> ```

Mais c’est du sadisme ça 🙂 J’évite **sudo** depuis toujours et je n’ai même pas **sudo** installé sur ma machine.  
il va me falloir créer une machine virtuelle debian.  
Mais bon, je vais utiliser ma machine virtuelle ubuntu depuis la machine hôte debian

```auto
michel@debg53sw:~$ ssh michel@192.168.122.144 'sudo --stdin fdisk -l /dev/vda'
michel@192.168.122.144's password: 
[sudo] Mot de passe de michel : monMotDePasseQuiSaffiche
Disque /dev/vda : 16 GiB, 17179869184 octets, 33554432 secteurs
Unités : sectors of 1 * 512 = 512 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x35ac68e3

Périphérique Amorçage Start Fin Secteurs Size Id Type
/dev/vda1 * 2048 999423 997376 487M 83 Linux
/dev/vda2 1001470 33552383 32550914 15,5G 5 Étendue
/dev/vda5 1001472 33552383 32550912 15,5G 8e LVM Linux
michel@debg53sw:~$ 

```

Sans l’option **–stdin** (ou **-S** ) le message d’erreur est :

> `sudo: pas de tty présent et pas de programme askpass spécifié`

En utilisant l’option courte **–stdin** de **sudo** , j’ai forcé **sudo** (ou plutôt **askpass** de **sudo** ) à  
lire le mot de passe depuis **stdin** (celui de **ssh** )  
au lieu de  
essayer de lire le clavier associé au terminal (le **tty** qui n’existe pas)

---

<div class="post-metadata">

**Author:** ![littlejohn75](https://www.debian-fr.org/user_avatar/www.debian-fr.org/littlejohn75/32/3840_2.png) [@littlejohn75](https://www.debian-fr.org/u/littlejohn75)\
**Post date:** [Octobre 7, 2016, 4:18 UTC](https://www.debian-fr.org/t/exercice-ssh-et-sudo/71247/2 "2016-10-07T16:18:17Z")

</div>

> [@Impossible de me servir de synaptic](https://www.debian-fr.org/t/impossible-de-me-servir-de-synaptic/71181/31):
>
> michel@debg53sw:~$ ssh [michel@192.168.122.144](mailto:michel@192.168.122.144) ‘sudo --stdin fdisk -l /dev/vda’

C’est une possibilité, mais on va dire que du point de vue sécurité ce n’est pas top 🙂 (si le mot de passe apparaît à l’écran ).

Je combine les commandes dans l’ordre inverse, voilà pourquoi

La commande _ssh_ est très pratique; on peut exécuter une commande sur une autre machine sans lancer un shell interactif si on veut une simple information

```auto
fp2x@drhpcmss:~$ ssh drhpcm06 cat /proc/loadavg
0.00 0.01 0.05 1/310 8712
fp2x@drhpcmss:~$

```

Comment exécuter sur une machine distante une commande qui nécessite les droits d’administration ?  
Sur chaque système linux, le compte root possède un répertoire HOME /root

```auto
fp2x@drhpcmss:~$ sudo sh -c "cd && pwd"
/root
fp2x@drhpcmss:~$

```

Sur chaque machine j’ai copié mon fichier authorized\_keys dans /root/.ssh/

```auto
fp2x@drhpcmss:~$ sudo ls -lApst /root/.ssh
total 20
16 -rw-r--r-- 1 root root 12794 janv. 29 2015 known_hosts
 4 -rw-r--r-- 1 root root 1941 sept. 15 2003 authorized_keys
fp2x@drhpcmss:~$ sudo id
uid=0(root) gid=0(root) groupes=0(root)
fp2x@drhpcmss:~$

```

Considérons les commandes suivantes

```auto
fp2x@drhpcmss:~$ ssh drhpcm06 ls -lApst /root/.ssh
ls: impossible d'accéder à /root/.ssh: Permission non accordée
fp2x@drhpcmss:~$ ls -lApst /root/.ssh
ls: impossible d'accéder à /root/.ssh: Permission non accordée
fp2x@drhpcmss:~$

```

Si nous utilisons bêtement _sudo_

```auto
fp2x@drhpcmss:~$ sudo ssh drhpcm06 ls -lApst /root/.ssh
The authenticity of host 'drhpcm06 (10.67.24.180)' can't be established.
RSA key fingerprint is 75:97:44:e8:47:da:13:4b:8a:0a:d9:c0:b8:13:4b:d6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'drhpcm06,10.67.24.180' (RSA) to the list of known hosts.
root@drhpcm06's password:
total 12
8 -rw-r--r-- 1 root root 6188 mai 26 2011 known_hosts
4 -rw-r--r-- 1 root root 1941 sept. 15 2003 authorized_keys
fp2x@drhpcmss:~$

```

Nous sommes obligés de donner le mot de passe car la commande ssh n’a pas trouvé dans son environnement les clés d’authentification qui étaient dans l’environnement initial (transfert des informations par l’agent AgentForwarding )

```auto
fp2x@drhpcmss:~$ ssh-add -l
1024 b6:0f:81:4e:f9:9a:a8:97:ef:52:6f:f9:d6:90:67:cb imported-openssh-key id_dsa (DSA)
1024 1c:22:50:8a:0c:04:98:89:40:90:b9:60:2f:28:83:ab openssh-key du 8 janvier 2003 (RSA)
fp2x@drhpcmss:~$ sudo ssh-add -l
Could not open a connection to your authentication agent.
fp2x@drhpcmss:~$

```

Le transfert des informations par l’agent (AgentForwarding) est réalisé par l’intermédiaire d’une socket

```auto
fp2x@drhpcmss:~$ env | fgrep SSH
SSH_CLIENT=10.67.6.40 62716 22
SSH_TTY=/dev/pts/0
SSH_AUTH_SOCK=/tmp/ssh-9DS5zpcRYM/agent.9778
SSH_CONNECTION=10.67.6.40 62716 10.67.24.192 22
fp2x@drhpcmss:~$

```

La combinaison gaganante qui permet d’envoyer des commandes privilégiées sans donner de mot de passe est la suivante

```auto
fp2x@drhpcmss:~$ sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh drhpcm06 ls -lApst /root/.ssh
total 12
8 -rw-r--r-- 1 root root 6188 mai 26 2011 known_hosts
4 -rw-r--r-- 1 root root 1941 sept. 15 2003 authorized_keys
fp2x@drhpcmss:~$

```

Je ne mets pas la sortie de `fdisk -l` car avec une utilisation massive de LVM il n’y a pas vraiment de table de partitions.

Vous pouvez copier ce message dans le forum Truc et Astuces.  
EDIT je veux dire Pause café, je n’ai pas vu votre message, trop occupé à rédiger le mien.

## Cordialement, Regards, Mit freundlichen Grüßen, مع تحياتي الخالصة

F. Petitjean  
Ingénieur civil du Génie Maritime.

« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »  
Pierre Dac
