2016-04-14 4 views
1

Bonjour J'utilise NXclient (UNix/KDE). Je cours un script de python où il essaye de créer la session de ssh à un autre serveur et exécute une tâche d'automation. Fondamentalement, je stocke un mot de passe dans la variable et lorsque la session SSH demande un mot de passe, il suffit d'envoyer le mot de passe stocké. ça marche très bien en utilisant du mastic. PROBLEME: lorsque j'utilise ci-dessus nxclient. chaque fois qu'une session SSH a besoin d'un mot de passe 'Une invite GUI apparaît demandant un mot de passe qui bloque le terminal et échoue mon script. Je ne veux pas entrer le mot de passe dans gui parce que le mot de passe est déjà stocké dans une variable qui sera utilisée.Désactiver la boîte de dialogue ssh ouverte pour le mot de passe pendant la session ssh

J'ai joint la capture d'écran suivante. Comment puis-je désactiver cela s'il vous plaît aider. click for screen shot

[EDIT] section de code qui fait que if password_prompt: child.sendline(getpass.getpass('Enter your windows password: ')) else : child.sendline(ssh_password) i = child.expect([os.path.basename(keyfile), pexpect.TIMEOUT])

+0

Vous pouvez passer à l'authentification plus sécurisée [public/private key authentication] (https://help.ubuntu.com/community/SSH/OpenSSH/Keys) – jDo

Répondre

0

Eh bien, vous avez quelques options:

  1. Actuellement vos clés sont added en ssh-agent avec option -c qui apporte la boîte de dialogue de confirmation vous demandant de taper yes chaque fois qu'une clé particulière est utilisée. Vous pouvez supprimer cette option -c de vos scripts de démarrage de session ou modifier ssh-agent de l'option OpenSSH Ssh-Agent par défaut en une version plus sophistiquée (mais peut-être moins sécurisée) qui vous permet de stocker des clés uniquement pour une session ou autre. Désactivez complètement l'utilisation de ssh-agent et fournissez le mot de passe du terminal par la variable d'environnement unset SSH_AUTH_SOCK. Préparez-vous à ce que les mots de passe ne puissent pas être lus à partir de STDOUT, ils nécessitent l'utilisation de TTY pour gérer les entrées (cochez pexpect)
  2. Basculez vers des clés sans mot de passe. Dans le cas de clés dédiées à un robot, cela ne semble pas être une violation majeure, car vous allez stocker la phrase secrète en texte brut. Mais probablement, il vaudrait mieux configurer
+0

Que voulez-vous dire? par "Actuellement vos clés sont ajoutées dans ssh-agent avec l'option -c". Où est le script de démarrage de la session? –

+0

Cela dépend de la distribution que vous utilisez actuellement. La mienne ajoute des clés au démarrage à partir d'un script dans '/ etc/profile.d /' – user3159253

+0

Ou vous pouvez simplement rajouter la clé sans l'option '-c' pour éviter une confirmation inutile avec' ssh-add' – user3159253

0

Actuellement, il existe une autre variable d'environnement appelée DISPLAY. le fait de désactiver DISPLAY et SSH_ASKPASS m'a aidé à résoudre ce problème