Exercice ssh et sudo

Mais c’est du sadisme ça :slight_smile: 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

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)

C’est une possibilité, mais on va dire que du point de vue sécurité ce n’est pas top :slight_smile: (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

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

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

Sur chaque machine j’ai copié mon fichier authorized_keys dans /root/.ssh/

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

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

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 )

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

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

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