web-dev-qa-db-fra.com

linux exécuter la commande à distance

comment puis-je exécuter une commande/un script sur une boîte linux distante? dire que je veux faire le service Tomcat démarrer sur la boîte b à partir de la boîte a.

34
user121196

Je suppose que ssh est le moyen le mieux sécurisé pour cela, par exemple:

ssh -OPTIONS -p SSH_PORT user@remote_server "remote_command1; remote_command2; remote_script.sh"  

où les OPTIONS doivent être déployées en fonction de vos besoins spécifiques (par exemple, la liaison à ipv4 uniquement) et où votre commande à distance peut démarrer votre démon Tomcat.

Remarque:
Si vous ne voulez pas être invité à chaque exécution de ssh, jetez également un coup d’œil à ssh-agent et éventuellement à keychain si votre système le permet. Key est ... pour comprendre le processus d’échange de clés ssh. Regardez attentivement ssh_config (le fichier de configuration du client ssh) et sshd_config (le fichier de configuration du serveur ssh). Les noms de fichiers de configuration dépendent de votre système. Quoi qu’il en soit, vous les trouverez quelque part comme /etc/sshd_config. Dans l’idéal, les utilisateurs ne doivent pas exécuter ssh en tant que root, mais bien en tant qu’utilisateur spécifique des deux côtés, serveurs et clients.

Quelques documents supplémentaires sur les pages principales du projet source:

ssh et ssh-agent
homme ssh

http://www.snailbook.com/index.html
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

trousseau
http://www.gentoo.org/doc/fr/keychain-guide.xml
un tuto plus ancien en français (par moi-même :-) mais pourrait être utile aussi:
http://hornetbzz.developpez.com/tutoriels/debian/ssh/keychain/

49
hornetbzz
 ssh user@machine 'bash -s' < local_script.sh

ou vous pouvez simplement 

 ssh user@machine "remote command to run" 
25
Orbit

Je pense que cet article explique bien:

Exécution de commandes sur un hôte Linux/UNIX distant

Google est votre meilleur ami ;-)

2
Jerry Tian

Si vous ne voulez pas traiter avec la sécurité et voulez le rendre aussi exposé (alias "commode") que possible à court terme et | ou n'avez pas de ssh/telnet ou génération de clé sur tous vos hôtes, vous pouvez pirater un one-liner avec netcat. Ecrivez une commande sur le port de votre ordinateur cible via le réseau et il l'exécutera. Ensuite, vous pouvez bloquer l'accès à ce port à quelques utilisateurs "de confiance" ou l'envelopper dans un script autorisant uniquement l'exécution de certaines commandes. Et utilisez un utilisateur à faible privilège. 

sur le serveur

mkfifo /tmp/netfifo; nc -lk 4201 0</tmp/netfifo | bash -e &>/tmp/netfifo

Cette doublure lit la chaîne que vous envoyez dans ce port et la transfère dans bash pour qu'elle soit exécutée. stderr & stdout sont renvoyés dans netfifo et renvoyés à l'hôte se connectant via nc. 

sur le client

Pour exécuter une commande à distance: echo "ls" | nc Host 4201

0
Beracah