J'ai essayé d'écrire un script shell qui peut se connecter automatiquement à un serveur ssh en utilisant un mot de passe qui est mentionné dans le script. J'ai écrit le code suivant:
set timeout 30
/usr/bin/ssh -p 8484 [email protected]
expect
{
"[email protected]'s password"
{
send "password\r"
}
}
Ce code ne fonctionne pas correctement, il demande toujours le mot de passe. Quelqu'un peut-il m'aider à résoudre ce problème
Réponses:
J'ai écrit une fois un
expect
script pour me connecter à un serveur ssh (comme votre cas) et mon script était quelque chose comme ceci:Je pense que peut-être le
interact
manque dans votre script.la source
cd
etls
et de lire également le contenu du fichier. Est-il possible de le faire après avoir interagi? Veuillez répondrels
commande après la connexion. Par exemple, après l'envoi du mot de passe, faites uneexpect
avec le texte de l'invite de commande (pour vous assurer que vous êtes connecté), puissend "ls\r"
. Tout cela va avantinteract
.file_list
après la sortie pour accéder à l'invite de commande localeVous vous y trompez. Ce que vous voulez faire, c'est générer une paire de clés ssh sans mot de passe, puis (tant que le serveur prend en charge l'authentification par clé RSA), vous pouvez entrer sans avoir à taper un mot de passe pour tous. Il s'agit d'un risque pour la sécurité si votre clé privée est stockée dans un endroit où elle pourrait être volée.
Suivez ces étapes:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
Il y aura maintenant deux fichiers dans votre
~/.ssh
répertoire,mysshkey.pub
etmysshkey
.mysshkey.pub
est votre clé publique, celle-ci est sûre à mettre sur des serveurs distants.mysshkey
est votre clé privée sans mot de passe, il n'est pas sûr de placer sur des serveurs distants (ou ailleurs, quelqu'un d'autre pourrait obtenir une copie).Sur le serveur sur lequel vous souhaitez vous connecter:
mkdir -p ~/.ssh
mysshkey.pub
dans~/.ssh/authorized_keys
~/.ssh/authorized_keys
est -chmod
« d à600
Maintenant, pour le mettre en action sur votre machine locale, vous exécutez la commande suivante:
Et vous serez connecté sans être invité à entrer un mot de passe.
Il s'agit d'une méthode bien préférable pour gérer les connexions automatisées car vous ne finissez pas par coder en dur votre mot de passe à plusieurs endroits qui doivent être mis à jour si vous le changez.
la source
Sur les distributions basées sur Debian, le
sshpass
paquet fournit un moyen plus simple de faire ce que vous voulez. Le package est disponible pour de nombreuses autres distributions populaires. Vous devez d'abord le configurer:Ensuite, appelez la commande SSH à partir d'un script comme celui-ci:
Cela offre plus de flexibilité, par exemple si vous utilisez un environnement local différent ou si vous devez changer le mot de passe, que les solutions utilisant
expect
.la source
Installez d'abord le sshPass
sudo apt-get install sshpass
Créez ensuite un alias dans le fichier .bashrc en tant que
Rechargez maintenant votre fichier .bashrc modifié en
source ~/.bashrc
Vous avez maintenant terminé.
Vous pouvez maintenant exécuter le ssh en utilisant l'alias créé ci-dessus
sshLogin
dans le terminal.la source
vous pouvez utiliser ceci:
la source
Tout ce dont vous avez besoin pour créer une clé hachée et l'enregistrer sur votre PC
Tapez simplement
puis entrez
puis connectez-vous normalement en utilisant
Maintenant, vous n'avez plus besoin d'un mot de passe
la source
ssh-copy-id
commande incroyablement utile , que personne d'autre n'a mentionnée. Je vote pour cela.Connexion sans mot de passe SSH en utilisant SSH Keygen en 5 étapes faciles :
Configuration de l'environnement:
Étape 1: Authentification SSH-Kegen Keys on - (192.168.0.12) Connectez-vous d'
abord au serveur 192.168.0.12 avec un utilisateur et générez une paire de clés publiques à l'aide de la commande suivante.
Étape 2: Créez le répertoire .ssh sur - 192.168.0.11
Utilisez SSH à partir du serveur 192.168.0.12 pour connecter le serveur 192.168.0.11 pour créer le répertoire .ssh sous celui-ci, en utilisant la commande suivante.
Étape 3: télécharger les clés publiques générées vers - 192.168.0.11
Utilisez SSH à partir du serveur 192.168.0.12 et téléchargez la nouvelle clé publique générée (id_rsa.pub) sur le serveur 192.168.0.11 sous le
.ssh
répertoire de l'utilisateur en tant que nom de fichier authorized_keys.Étape 4: définir les autorisations sur - 192.168.0.11
En raison des différentes versions SSH sur les serveurs, nous devons définir des autorisations sur le
.ssh
répertoire et leauthorized_keys
fichier.Étape 5: Connectez - vous du serveur 192.168.0.12 au serveur 192.168.0.11 sans mot de passe
À partir de maintenant, nous pouvons nous connecter à 192.168.0.11 en tant qu'utilisateur sheena à partir du serveur 192.168.0.12 en tant qu'utilisateur tecmint sans mot de passe.
la source
chmod 700 id_rsa
dans le répertoire .ssh du serveur local (client, ie 192.168.0.12 dans votre exemple): problème résoluComme déjà décrit dans d'autres réponses, j'utilise également
sshpass
mais je le combine avec laread
commande pour stocker mon mot de passe dans une variable d'environnement temporaire. De cette façon, mon mot de passe n'est jamais écrit en clair. Voici la commande en ligne que j'utilise:Après cela, vous devez entrer votre mot de passe (rien n'apparaît à l'écran), puis appuyer sur Entrée ouvrira la connexion.
la source
Je l'ai fait récemment, cela peut vous aider:
si cela ne fonctionne pas, vous devrez générer des clés sur l'autre machine avec laquelle vous souhaitez vous connecter
il générera des clés privées et publiques et vous demandera un emplacement, laissez vide, il enregistrera les clés dans le dossier .ssh par défaut, il vous demandera une phrase secrète, vous pouvez également le laisser vide dans le dossier .ssh et changer le le nom de la clé publique à «authorized_keys»
cela ajoutera l'utilisateur à la liste maintenant, allez dans le répertoire personnel et donnez l'autorisation et redémarrez les services sshd
vous devez maintenant déplacer la clé privée vers le système à cet emplacement à partir duquel vous allez exécuter la commande ssh, puis vous pouvez vous connecter avec
si même cela ne fonctionne pas, allez dans / etc / ssh ouvrez sshd_config avec l'éditeur vim vérifiez si le pubkeyAuthenticatoin est réglé sur oui ou non, sinon changez-le en oui, redémarrez les services sshd et essayez-le, cela fonctionnera certainement .
la source
Le premier argument est le nom d'hôte et le second est le mot de passe.
Exécution: ./script.expect
la source