Comment passer le mot de passe à la command scp utilisée dans le script bash?

Duplication possible:
Connectez-vous via SSH et saisissez automatiquement le mot de passe, sans utiliser de key publique

J'ai un script bash qui supprime DB, puis copy le file d'un server à l'autre mais il request toujours le mot de passe avant la connection.

scp file.tar.gz root@xxx.xxx.xxx.194:/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 root@xxx.xxx.xxx.194:/backup 

Plutôt que d'utiliser root, créez un count juste pour ce travail. Utilisez des keys publiques sans phrase de passe au lieu de passwords.

 scp -i /home/backupuser/.ssh/id_rsa backupuser@xxx.xxx.xxx.194:/backup 

En utilisant un count spécial pour la sauvegarde sur le système de destination, vous n'indiquez pas votre mot de passe root.

scp utilise SSH pour tunnel sur un server distant et transfert de files. SSH peut authentifier les users avec un mot de passe, une key SSH ou les deux (recommandé).

Pour transférer des files sans mot de passe, créez une key SSH pour l'user que vous allez utiliser (la racine n'est pas recommandée, utilisez un user non privilégié et avez un travail sur le server 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 connections de key SSH (également dans le lien ci-dessus).

Gardez à l'esprit que les keys SSH compromises sans mot de passe sont identiques à celles des passwords compromis – n'importe qui peut entrer. Pour les users réels, il est préférable de doubler la security et d'exiger la key et un mot de passe.

Il est préférable de configurer ssh pour utiliser l'authentification basée sur les keys plutôt que d'essayer de comprendre comment envoyer du text au process de connection avec quelque chose comme expect .

Jeter un coup d'œil à:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys

Donc, fondamentalement, exécutez ssh-keygen -t dsa sur la machine qui exécutera votre script. Quand il vous request une phrase secrète, appuyez sur ENTRÉE pour accepter un message vide. Vous obtiendrez deux files. Si vous avez suivi les suggestions par défaut, les files seront ~ / .ssh / id_dsa et ~ / .ssh / id_dsa.pub. La première est la key privée. La seconde est la key publique.

Copiez la key publique sur le deuxième server en utilisant ssh-copy-id user@server2 . Cela appenda la key publique au file authorized_keys de l'user sur server2.

Vous devriez maintenant pouvoir exécuter ssh depuis la première machine et vous connecter sans mot de passe.

Pour copyr les files, scp ou rsync sont bien. Cela dépend de ce que vous faites. rsync utilisera ssh par défaut, et utilisera l'authentification par key que vous venez de configurer.

Vous ne devriez pas utiliser des ssh-keys sans mot de passe pour des raisons de security.

Le keychain outil peut vous aider à réutiliser ssh-agent et à exécuter rsync sur ssh dans les scripts sans être invité à find des passwords.

Pour l'installer sur une machine Ubuntu, exécutez simplement la command suivante.

 sudo apt-get install keychain 

Consultez la page de manuel pour keychain pour plus d'informations sur la façon de l'utiliser.

pscp vous permet de passer le mot de passe directement à l'aide de l'argument -pw. Alternativement, et c'est une meilleure idée, utilisez l'agent ssh et configurez l'ouverture de session basée sur les keys – ceci est plus sécurisé. Il existe un howto sur la configuration de ssh pour utiliser la connection par key ici

Vous pouvez utiliser la command yes pour envoyer un oui au programme.