J'ai ce fichier Bash, qui demande une adresse IP, un mot de passe, etc. pour OpenSSH à un périphérique. P>
Maintenant, si j'utilise C'est ce que je veux -> p>
pas le mot de passe; J'ai déjà trouvé quelque chose; Mais cela me dit que les commandes ne sont pas trouvées?: P>
Je souhaite que l'utilisateur puisse voir des menus où ils peuvent choisir; après ça; Chaque commande est faite pour lui. Donc, comme une nouvelle fenêtre, ou quelque chose comme ça? P> Li>
Je ne veux pas utiliser:
-Any trucs externes
-Non montage supplémentaire de la connexion SSH p> li>
ol> li>
ol>
bash info: gnu bash, v. 4.0.33 (1) -Release (I486-PC-Linux-GNU), fonctionnant sur la menthe Linux. Mais il doit être disponible pour plusieurs distro de Linux, ainsi que sur Mac? P> ssh root @ ip code>, je dois entrer le mot de passe. C'est vraiment irritant. Deuxièmement; Je ne peux pas laisser mon script en envoyer des commandes. P>
#! / usr / bin / attendre -f code> p>
pwawn ssh root @ $ iPaddr code> p>
attendre "mot de passe:" code> p>
Sommeil 1 code> p>
Envoyer "$ rasserd \ r" code> p>
8 Réponses :
De nombreux outils pour faire de grandes longueurs pour éviter ce que vous faites. Je recommande d'utiliser des clés publiques SSH pour résoudre ce problème au lieu de mots de passe. P>
La grande alternative consiste à écrire votre propre client SSH modifié en fonction de la source ouverte afin de prendre le contrôle de la gestion du mot de passe. P>
Oh, eh bien, j'ai oublié. Vous pouvez probablement immerger cela avec une PTY, puisque / dev / tty sera ce que vous contrôlez. attendre pourrait vous aider avec cela. P>
Comme je l'ai dit: Pas d'édition supplémentaire de la connexion SSH code>; y compris les clés publiques.
Je pourrais commencer à éditer le client SSH, mais cela va prendre un certain temps. Merci d'avoir suggéré.
Utilisez SSH-KeyGen pour créer une clé publique de votre machine, puis copiez votre local Vous devrez peut-être resserrer les autorisations sur le fichier Authorisé_Keys: CHMOD 600 P> ~ / .ssh / id_rsa.pub code> ou
~ / .ssh / identity.pub code.pub > Pour le système distant, dans
~ / .SSH / Authorize_Keys code>. p>
Attendez-vous à est l'outil habituel pour automatiser les sessions interactives. P>
J'ai déjà donné cela dans ma question, mais je n'ai pas de spawn et j'envoie non plus. Maintenant, je dois vraiment les télécharger, mettre mon dossier? Si dur.
Celles-ci s'attendent à des commandes, vous exécutez le script par attendu, oui?
SPAWN et SENDENT sont des commandes que attendez code> reconnaît. Ils ne sont pas des téléchargements séparés. Vous devez vous assurer que le chemin d'accès à
attendre code> est correct pour votre système dans le shebang. Vous voudrez probablement utiliser la commande code> Interact code> dans votre
Attendez-vous au script code>.
Comment puis-je utiliser attendre comme quelque chose à partager avec les autres?
Avez-vous envisagé paramiko ? C'est une bibliothèque Python pour interagir avec SSH. P>
Puis-je interagir avec elle à travers Bash?
Cela dépend de ce que vous voulez. Si vous avez fourni plus de détails sur quel problème vous êtes vraiment i> essayer de résoudre, ce serait plus facile d'aider.
Ce que j'essaie de faire est d'utiliser bash créer une sorte de client SSH. J'aime vraiment cette idée de paramiko; Mais ce que je dois faire, c'est l'interagir avec Bash. Le code est écrit en bash et je veux qu'il le garde comme ça. Je ne sais pas python; Je suis un programmeur de départ. De toute façon; Ce que je veux faire, c'est comme (presque) tout ce qui est possible avec ssh; le mot de passe comme IT-dans Paramiko, CD au répertoire; édition de la permission; Supprimer des fichiers / des dossiers; créer des dossiers; Copier des fichiers / des dossiers d'un PC sur un périphérique; etc.
Necropost avancé: Pexpect, spécifiquement pxsh, PEXPECT.SOURCEFORGE.net/PXSSH.HTML fait le travail .
La bonne façon de le faire sans stocker les mots de passe en clair sur votre machine est avec SSH. Première exécution: p>
ssh-keygen p> blockQuote>
Ceci générera une nouvelle clé SSH dans
~ / .ssh / id_rsa.pub code>. Après cela, il est simplement exécuté: p>
utilisateur ssh-copy-id utilisateur@my.server.com p> blockQuote>
Si vous êtes sur OS X ou une autre machine qui n'a pas "SSH-Copy-ID", il y a une ligne Alternatives telles que celle-ci: p>
CAT ~ / .SSH / ID_RSA.PUB | SSH User @ Machine "MKDIR ~ / .SSH; CAT >> ~ / .SSH / Authorisé_keys" P> blockQuote>
En fin de compte, vous devez simplement ajouter le contenu de
~ / .sssh / id_rsa.pub code> sur votre machine locale sur
~ / .ssh / autorisé_keys code> sur le serveur distant. Comment vous faites cela est à vous, ce qui précède, les raccourcis rapides sont juste pour le faire. P>
Même si je voudrais utiliser des touches PEM pour cela et c'est un ancien sujet, je voulais aussi citer sshpass < / a> p>
La bonne façon d'aller est de copier les clés comme cela a été dit ici. Pour ajouter quelque chose à la conversation, il y a des cas où La question pose spécifiquement de la script dans un système avec SSH. S'il s'agit du développement d'un système intégré, il peut être utile de combiner sshpass code> peut être pratique.
sshpass code> avec des options de ligne de commande, car elle se lit sur ce message P>
ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no pi@192.168.0.145
Vous pouvez utiliser ce script: https://github.com/aPrey10/ssh-authorizer " a> p>
Il permet également de sauter la demande de phrase secrète des touches SSH. P>
DUP: Stackoverflow.com/questions/1449932