Duplicata possible:
Connectez-vous via SSH et saisissez automatiquement le mot de passe, sans utiliser de clé publique
J'ai un script bash qui fait un vidage de la base de données puis copie le fichier d'un serveur à un autre mais il demande toujours un mot de passe avant la connexion.
scp file.tar.gz [email protected]:/backup
Existe-t-il un moyen de passer le mot de passe directement dans le script?
Utilisez l'outil sshpass
sshpass -p 'password' scp file.tar.gz [email protected]:/backup
Plutôt que d'utiliser root, créez un compte uniquement pour ce travail. Utilisez des clés publiques sans phrase de passe au lieu de mots de passe.
scp -i /home/backupuser/.ssh/id_rsa [email protected]:/backup
En utilisant un compte spécial pour la sauvegarde sur le système de destination, vous n'exposez pas votre mot de passe root.
pscp vous permet de lui passer directement le mot de passe en utilisant l'argument -pw. Alternativement, et c'est une meilleure idée, utilisez l'agent ssh et configurez la connexion basée sur les clés - c'est plus sûr. Il y a un guide sur la configuration de ssh pour utiliser la clé logon ici
Vous pouvez utiliser la commande yes pour envoyer un oui au programme.
Il est préférable de configurer ssh pour une authentification par clé utilisée plutôt que d'essayer de comprendre comment envoyer du texte au processus de connexion avec quelque chose comme expect
.
Jeter un coup d'œil à:
https://help.ubuntu.com/community/SSH/OpenSSH/Keys
Donc, en gros, exécutez ssh-keygen -t dsa
sur la machine qui exécutera votre script. Lorsqu'il vous demande une phrase secrète, appuyez sur ENTRÉE pour accepter un blanc. Vous obtiendrez deux fichiers. Si vous avez suivi les suggestions par défaut, les fichiers seront ~/.ssh/id_dsa et ~/.ssh/id_dsa.pub. Le premier est la clé privée. Le second est la clé publique.
Copiez la clé publique sur le deuxième serveur à l'aide de ssh-copy-id user@server2
. Cela ajoutera la clé publique au fichier authorized_keys de l'utilisateur sur server2.
Vous devriez maintenant pouvoir exécuter ssh à partir de la première machine et vous connecter sans mot de passe.
Pour copier les fichiers, scp ou rsync conviennent. Cela dépend de ce que vous faites. rsync utilisera ssh par défaut, il utilisera donc l'authentification par clé que vous venez de configurer.
Vous ne devez pas utiliser les clés ssh sans mot de passe pour des raisons de sécurité.
L'outil keychain
peut vous aider à réutiliser l'agent ssh et à exécuter rsync sur ssh dans les scripts sans être invité à saisir des mots de passe.
Pour l'installer sur une machine Ubuntu, exécutez simplement la commande suivante.
Sudo apt-get install keychain
Consultez la page de manuel du troussea pour plus d'informations sur son utilisation.
scp
utilise SSH
pour créer un tunnel vers un serveur distant et transférer des fichiers. SSH
peut authentifier les utilisateurs avec un mot de passe, une clé SSH
ou les deux (recommandé).
Pour transférer des fichiers sans mot de passe, créez une clé SSH
pour l'utilisateur que vous allez utiliser (la racine est pas recommandé, utilisez un utilisateur non privilégié à la place et ayez un travail sur le serveur cible en tant que root pour effectuer l'action privilégiée).
Ensuite, vous devez configurer le démon SSH
du système cible pour accepter les connexions par clé SSH
(également dans le lien ci-dessus).
Gardez à l'esprit que les clés SSH
compromises sans mot de passe sont les mêmes que les mots de passe compromis - tout le monde peut y entrer. Pour les vrais utilisateurs, il est préférable de doubler la sécurité et d'exiger la clé et un mot de passe.