Comment automatiser la connexion SSH avec mot de passe? Je configure ma machine virtuelle de test, de sorte que la sécurité lourde n'est pas considérée. SSH choisi pour une sécurité acceptable avec une configuration minimale.
ex)
echo password | ssh id@server
Ça ne marche pas.
Je me souviens que j'ai fait cela avec des astuces, mais quelqu'un ne m'a pas rappelé le truc que j'ai utilisé ...
ssh
password
automation
Eonil
la source
la source
Réponses:
N'utilisez pas de mot de passe. Générez une clé SSH sans mot de passe et transmettez-la à votre machine virtuelle.
Si vous avez déjà une clé SSH, vous pouvez ignorer cette étape… Appuyez simplement sur Enterpour la clé et les deux mots de passe:
Copiez vos clés sur le serveur cible:
Maintenant, essayez de vous connecter à la machine, avec
ssh 'id@server'
, et enregistrez:pour vous assurer que nous n'avons pas ajouté de clés supplémentaires auxquelles vous ne vous attendiez pas.
Enfin, vérifiez la connexion…
Vous voudrez peut-être aussi utiliser
ssh-agent
si vous voulez protéger vos clés avec une phrase secrète.la source
la source
ssh
une seule fois avant d'utilisersshpass
, afin de confirmer l'empreinte RSA.bash_history
en texte clair sur votre ordinateur.history -r
après la commande pour effacer votre historique. Bon point cependant.Bien que la réponse correcte à votre question soit sshkey , il existe un moyen plus sûr: les clés SSH. Vous n'êtes qu'à trois étapes faciles de la solution:
Générez une paire de clés rsa :
puis copiez-le sur le serveur avec une simple commande :
vous pouvez maintenant vous connecter sans mot de passe :
la source
ssh-copy-id
.ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
Utilisez attendez:
Exemple:
la source
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null
pour la commande ssh afin d’éviter d’accepter la machine dans les hôtes connusCela ne vous servira peut-être pas, mais vous pouvez le faire avec Perl:
la source
Je suis surpris que personne ne mentionne
plink
leputty-tools
paquet dans Ubuntu:Il est également disponible sur Windows et la syntaxe est principalement compatible avec le client openssh.
la source
putty-tools
paquetLa connexion unique SSH est généralement réalisée avec une authentification à clé publique et un agent d'authentification. Vous pouvez facilement ajouter votre clé de machine virtuelle de test à un agent d'authentification existant (voir l'exemple ci-dessous). D'autres méthodes telles que gssapi / kerberos existent mais sont plus complexes.
sshpass
Dans les situations où
password
la seule méthode d'authentification disponible est disponible, sshpass peut être utilisé pour entrer automatiquement le mot de passe. Portez une attention particulière à la section CONSIDÉRATIONS DE SÉCURITÉ de la page de manuel . Dans les trois options, le mot de passe est visible ou stocké en texte brut à un moment donné :Tube anonyme (recommandé par sshpass)
C'est assez lourd en bash, sans doute plus facile avec les langages de programmation. Un autre processus pourrait être associé à votre pipe / fd avant que le mot de passe ne soit écrit. La fenêtre d'opportunité est assez courte et limitée à vos processus ou à votre racine.
Variable d'environnement
Vous et root pouvez lire les variables d'environnement de votre processus (c'est-à-dire votre mot de passe) pendant que sshpass est en cours d'exécution (
cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). La fenêtre d'opportunité est beaucoup plus longue mais reste limitée à vos propres processus ou racine, pas aux autres utilisateurs.Argument de ligne de commande (le moins sécurisé)
Ceci est pratique mais moins sécurisé que décrit dans la page de manuel. Les arguments de ligne de commande sont visibles pour tous les utilisateurs (par exemple
ps -ef | grep sshpass
). sshpass tente de cacher l'argument, mais il existe toujours une fenêtre dans laquelle tous les utilisateurs peuvent voir votre mot de passe passé par argument.Note latérale
Définissez votre variable bash HISTCONTROL sur
ignorespace
ouignoreboth
et préfixez vos commandes sensibles avec un espace. Ils ne seront pas sauvés dans l'histoire.Authentification par clé publique SSH
La phrase secrète est très importante. Quiconque obtiendra le fichier de clé privée ne pourra pas l'utiliser sans la phrase secrète.
Configurez l'agent d'authentification SSH
Connecter comme d'habitude
L'avantage est que votre clé privée est cryptée et qu'il vous suffit d'entrer sa phrase secrète une seule fois (via une méthode de saisie plus sûre également).
la source
Bien sûr, vous ne voulez pas utiliser de clés SSH plutôt que de mots de passe? De cette façon, c'est à la fois sécurisé et automatique.
la source
En fonction de vos besoins en automatisation, Ansible vous conviendrait peut-être parfaitement. Il peut très bien gérer des choses telles que l'invite à entrer un mot de passe, l'invite à entrer un mot de passe sudo, diverses façons de changer d'utilisation, en toute sécurité à l'aide de secrets cryptés (coffre-fort).
Si cela ne convient pas, je suggérerais Expect, comme suggéré dans une autre réponse.
la source