Comment ssh à partir d'un script bash?

J'essaie de créer une connexion ssh et de faire certaines choses sur le serveur distant à partir du script.

Cependant, le terminal me demande un mot de passe, puis ouvre la connexion dans la fenêtre du terminal au lieu du script. Les commandes ne sont pas exécutées jusqu'à ce que je quitte la connexion.

Comment puis-je ssh à partir d'un script bash?

46
demandé sur Ben 2009-12-13 03:33:49

4 réponses

  1. Si vous voulez que l'invite de mot de passe disparaisse, utilisez l'authentification par clé (décrite ici).

  2. Pour exécuter des commandes à distance sur ssh, vous devez les donner comme argument à ssh, comme suit:

Racine @ hôte: ~ # SSH racine@www 'ps-ef / grep apache / grep-v grep | wc-L'

57
répondu halfdan 2013-05-06 13:00:33

Si vous voulez continuer à utiliser des mots de passe et ne pas utiliser l'échange de clés, vous pouvez le faire avec 'expect' comme ceci:

#!/usr/bin/expect -f
spawn ssh user@hostname
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN
14
répondu SiegeX 2009-12-13 00:54:31

Il y a encore une autre façon de le faire en utilisant des connexions partagées, c'est-à-dire: quelqu'un initie la connexion, en utilisant un mot de passe, et chaque connexion suivante se multiplexera sur le même Canal, ce qui annule le besoin de ré-authentification. ( Et c'est plus rapide aussi)

# ~/.ssh/config 
ControlMaster auto
ControlPath ~/.ssh/pool/%r@%h

Ensuite, il vous suffit de vous connecter, et tant que vous êtes connecté, le script bash pourra ouvrir les connexions ssh.

Vous pouvez alors empêcher votre script de fonctionner lorsque quelqu'un n'a pas déjà ouvert le canal par:

ssh ... -o KbdInteractiveAuthentication=no ....
4
répondu Kent Fredric 2009-12-13 10:25:51

Ce que vous devez faire est d'échanger les clés SSH pour l'utilisateur, le script s'exécute. Jetez un oeil à ce tutoriel

Après cela, vos scripts s'exécuteront sans avoir besoin d'entrer un mot de passe. Mais, pour des raisons de sécurité, vous ne voulez pas faire cela pour les utilisateurs root!

2
répondu Dan Soap 2009-12-13 00:36:23