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 21/03/2018, à 12:49

tarkan99

[contourné] expect et ssh sans saisie de mot de passe

Hello,

je cherche, en vue de réaliser un script zenity, de lancer ssh -X avec saisie dans le formulaire du mot de passe.

J'ai trouvé expect qui peut m'aider.

Ce script fonctionne :

#!/usr/bin/expect -f
set password "le mot de passe"
set ipaddr "serveur distant"
set port 22
set timeout -1
spawn ssh $ipaddr -l COMPTE -p 22 -X thunar
match_max 100000
expect "*?assword*"
send -- "$password\r"
send -- "\r"
expect eof

La fenêtre thunar s'ouvre bien mais la console reste bloqué sur la saisie du mot de passe.
(obligé de quitter avec Ctrl C).

une idée pour ce petit soucis ?

Merci d'avance !

Dernière modification par tarkan99 (Le 21/03/2018, à 22:29)


xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#2 Le 21/03/2018, à 14:00

maxire

Re : [contourné] expect et ssh sans saisie de mot de passe

Salut,

Pourquoi utiliser expect alors que zenity permet l'affichage d'une boîte de dialogue de saisie de mot de passe?

Exemple extrait de l'aide Zenity:

Aide Zenity a écrit :

Boîte de dialogue de saisie de mot de passe
L'option --password crée une boîte de dialogue de saisie de mot de passe.
Options de la boîte de dialogue de saisie de mot de passe :
--username
Afficher le champ Nom d'utilisateur.
Le script d'exemple suivant montre comment créer une boîte de dialogue de saisie de mot de passe :
#!/bin/sh

ENTRY=`zenity --password --username`

case $? in
         0)
         echo "Nom d'utilisateur : `echo $ENTRY | cut -d'|' -f1`"
         echo "Mot de passe : `echo $ENTRY | cut -d'|' -f2`"
        ;;
         1)
                echo "Arrêt de la connexion.";;
        -1)
                echo "Une erreur inattendue est survenue.";;
esac

Dernière modification par maxire (Le 21/03/2018, à 14:01)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#3 Le 21/03/2018, à 14:33

MicP

Re : [contourné] expect et ssh sans saisie de mot de passe

Bonjour

Connexion au serveur ssh sans avoir à spécifier de mot de passe <=> identification par clef publique

1°/ Depuis chaque compte utilisateur qui voudrait se connecter au serveur SSH,
créer une clef publique et privée en utilisant la commande ssh-keygen mais sans spécifier de mot de passe.

ssh-keygen -t rsa

quand un mot de passe est demandé, appuyer sur Entrée.


2°/ Toujours depuis ce compte utilisateur, transmettre la clef publique au serveur ssh distant auquel tu veux te connecter :

ssh-copy-id -i ~/.ssh/id_rsa.pub compteUilisateurSurServeurSSHdistant@adresseIPouNomDuServeurSSHdistant

il faudra spécifier le mot de passe du compteUilisateurSurServeurSSHdistant


3°/ Se connecter par ssh depuis le compte qui a transmis sa clef publique => aucun mot de passe ne sera demandé par le serveur ssh

Chaque utilisateur qui a transmis sa clef publique pourra se connecter au serveur
en utilisant le compte et la machine depuis laquelle il a créé sa clef.
(en fait, si il a la clef privée correspondant à la clef publique que le serveur a reçu)

Dernière modification par MicP (Le 21/03/2018, à 14:47)

Hors ligne

#4 Le 21/03/2018, à 15:21

tarkan99

Re : [contourné] expect et ssh sans saisie de mot de passe

@maxire
As-tu essayé via ton script de fournir le mot de passe saisi à ssh ?
Le problème se pose pour fournir à ssh le mot de passe. Zenity ou pas, sans expect, ce n'est pas possible.

@MicP  : merci pour le conseil mais j'ai déjà regardé l'utilisation des clés publiques mais dans mon contexte, cela ne me convient pas.
(d'où mes recherches sur expect)

mais merci quand même !

Dernière modification par tarkan99 (Le 21/03/2018, à 19:20)


xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#5 Le 21/03/2018, à 21:49

LeoMajor

Re : [contourné] expect et ssh sans saisie de mot de passe

bonjour,
tu as aussi

sshpass - noninteractive ssh password provider

---
essayer avec

set timeout 120

ssh -X est médiocre question performance ; préférer ssh -t   (mutt, mc, ... softs semi-graphique à base de ncurses ou equivalent)
essayer thunar tardivement, en attendant le retour

set prompt {toto\@machine:~\$}
expect -re "$prompt" { send "thunar\n" }

Hors ligne

#6 Le 21/03/2018, à 22:17

tarkan99

Re : [contourné] expect et ssh sans saisie de mot de passe

@LeoMajor

nickel le sshpass !

je peux laisser tomber expect !

Concernant -X ou -t, -t fonctionne pour thunar et firefox et je vois une petite différence sur l'ouverture d'appli (dans un lan).

Je passe le sujet à contourné.

Merci !

voici mon script zenity (mon 1° soit dit en passant...) :

#!/bin/bash

#On crée le formulaire en stockant les valeurs de sortie dans $cfgpass :/
cfgpass=`zenity --forms \
    --title="Runas" \
    --text="Thunar" \
    --add-entry="Nom de l'utilisateur" \
    --add-password="Mot de passe" \
    --separator="|"`
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi
compte=$(echo "$cfgpass" | cut -d "|" -f1) 
passe=$(echo "$cfgpass" | cut -d "|" -f2) 

sshpass -p $passe ssh $compte@bell -t thunar

débutant en script, ce n'est pas forcement très propre (surtout la partie =$(echo ....)

Dernière modification par tarkan99 (Le 21/03/2018, à 22:40)


xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#7 Le 22/03/2018, à 11:05

maxire

Re : [contourné] expect et ssh sans saisie de mot de passe

Salut,

Je n'avais pas réellement répondu à la question car comme tu citais zenity, je ne comprenais pas bien l'utilisation de expect

Tu as aussi cette solution en utiiisant zenity password dialog qui malheureusement affiche une partie de texte anglais.

#!/bin/sh
ENTRY=`zenity --username --password --title="Accès SSH" `
case $? in
         0)
         username=`echo $ENTRY | cut -d'|' -f1`
         password=`echo $ENTRY | cut -d'|' -f2`
         sshpass -p "$password" ssh $username@localhost ls -l
        ;;
         1)
                echo "Arrêt de la connexion.";;
        -1)
                echo "Une erreur inattendue est survenue.";;
esac

Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#8 Le 22/03/2018, à 14:21

tarkan99

Re : [contourné] expect et ssh sans saisie de mot de passe

merci pour les conseils !


xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#9 Le 23/03/2018, à 17:35

tarkan99

Re : [contourné] expect et ssh sans saisie de mot de passe

Pour info, j'ai abandonné zenity pour Gambas, un poil plus puissant ;-)


xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#10 Le 25/03/2018, à 18:18

LeoMajor

Re : [contourné] expect et ssh sans saisie de mot de passe

salut,
variante whiptail, semi-graphique

user="toto"; server="server";  req=$(whiptail --title "ssh" --inputbox "" 7 50 "${user}@${server}" 3>&1 1>&2 2>&3) && rauth=$(whiptail --clear --title "Connection: ssh -4t $req -p22" --passwordbox "mot de passe ?" 7 60  3>&1 1>&2 2>&3) && cmd=$(whiptail --clear --title "Commandes: ssh -4t $req -p22" --radiolist "cmd" 7 60 5 "None" "" ON "mc" "" OFF "vfu" "" OFF "bastet" "" OFF "mutt" "" OFF 3>&1 1>&2 2>&3); echo -e "$req\t$cmd\t$rauth"

Hors ligne