Avant de commencer, lisez cette article et prenez conscience des dangers d'un SSH mal sécurisé.
Vous ne le savez peut-être pas, mais le SSH ne sert pas qu'a se connecter sur un serveur/RPI.
En effet, les commandes SSH ont de multiples options qui permettent beaucoup d'actions.
Nous allons les voir ensemble.
Cette partie s'adresse principalement aux utilisateurs de Linux/UNIX/Mac os.
Une partie pour Windows sera disponible dans les prochains jours.
Avec la commande SSH il est possible d’exécuter, non pas un Shell, mais une commande, une suite de commandes, un script distant, ...
Nous avons tous l'habitude d'utiliser la commande comme ceci :
Code : Tout sélectionner
$ ssh [user@]host
sauf si vous avez configuré vos clés avec un mot de passe pour les déverrouillée, mais dans ce cas, c'est votre client SSH local qui intervient.
Aussi, pour votre information, [user@] est une option pour "ssh"
Il est possible de passer en paramètre la commande que l'on souhaite exécuter sur le serveur/RPI :
Code : Tout sélectionner
$ ssh pi@yourPiAdress date
Sun Nov 30 18:24:10 CET 2014
$
Une fois terminée, nous récupérons la main sur votre terminal local.
Un autres exemple, demandons au programme "service" de redémarrer notre service NTP de notre serveur/RPI distant (sans clés SSH):
Code : Tout sélectionner
$ ssh pi@yourPiAdress "sudo service ntp restart"
pi@yourPiAdress's password:
Stopping NTP server: ntpd.
Starting NTP server: ntpd.
$
Code : Tout sélectionner
$ ssh pi@yourPiAdress "sudo /etc/init.d/ntp restart"
Stopping NTP server: ntpd.
Starting NTP server: ntpd.
$
Magique, non ?
Vous voulez encore un autre tour ? Oui ?
C'est parti pour un second tour !
Je vais vous montrer que d'autres programmes utilisent le SSH pour travailler.
C'est le cas de la commande "scp".
Tout le monde (ou presque) à déjà utilisé la commande "cp", pour copier un fichier d'un endroit à un autre.
Et bien ici, c'est la même chose, mais entre machine via le SSH.
La syntaxe est identique à la commande "cp" :
Code : Tout sélectionner
$ cp <source> <destination>
Code : Tout sélectionner
$ cp /premier/dossier/fichier.txt /second/dossier/
Code : Tout sélectionner
$ scp <[user@][host:]source> <[user@][host:]destination>
Code : Tout sélectionner
$ scp /premier/dossier/fichier.txt pi@yourPiAdress:/second/dossier/
Il est possible de copier un fichier depuis notre serveur/RPI vers notre ordinateur :
Code : Tout sélectionner
$ scp pi@yourPiAdress:/premier/dossier/fichier.txt /second/dossier/
Code : Tout sélectionner
$ scp pi@yourFirstPiAdress:/premier/dossier/fichier.txt pi@yourSecondPiAdress:/second/dossier/
Code : Tout sélectionner
$ scp -r /home/pi pi@yourPiAdress:/tmp/
Magique, non ?
Hop Hop Hop, ou allez-vous ?
C'est pas fini pour ce tour !
Voici, qui arrive, la commande rsync, qui utilise également le SSH pour travailler.
Croyez moi sur parole, cette commande est tellement PUISSANTE, qu'elle fera l'objet d'un article rien que pour elle. Promis !
Pour vous donner une idée : c'est, sans aucun doute, la commande la plus utilisée pour faire des backups sous Linux.
Je vais donc voir avec vous le strict minimum qu'il faut savoir pour débuter avec cette commande.
La première chose qu'il faut savoir avec cette commande c'est qu'elle fait, à quelques détails près, la même chose que scp, mais en mieux.
En effet, elle ne fait pas que copier des fichiers "bêtement", elle compare les fichiers de la source avec ceux de la destination,
si les fichiers de la source sont plus récents, ils seront copiés à la destination, dans le cas inverse, rien ne sera fait.
Ce comportement est celui par défaut de la commande, mais peut-être modifié via les nombreuses options de la commande.
Pour vous donner une nouvelle idée sur la commande : Il y a pas moins de "2200" lignes dans le manuel de rsync contre 133 pour "scp".
Pour l'utiliser, il faut comprendre, comme pour scp, la syntaxe utilisée :
Code : Tout sélectionner
$ rsync <[user@][host:]source> <[user@][host:]destination>
Code : Tout sélectionner
$ rsync /premier/dossier/fichier.txt pi@yourPiAdress:/second/dossier/
Code : Tout sélectionner
$ scp pi@yourPiAdress:/premier/dossier/fichier.txt /second/dossier/
Comme je vous l'ai dis plus haut, elle permet de synchroniser des dossiers entre eux.
Prenons un exemple : Nous développons un site web sur notre ordinateur, mais le service apache se trouve sur notre serveur/RPI,
nous devons donc synchroniser notre dossier avec celui de notre serveur/RPI :
Code : Tout sélectionner
$ rsync -r /home/user/www-dev/ pi@yourPiAdress:/var/www/
Si vous êtes observateur, vous aurez remarqué que j'utilise l'option "-r" pour la récursivité.
Si vous utilisez cette commande, vous allez observer que celle-ci parle très peu.
Vous pouvez lui demander d'être plus explicite avec l'option "-v".
Si vous trouvez que ce n'est pas encore assez à votre goût, vous avec encore la possibilité d'utiliser d'autres options pour augmenter la lisibilité de la commande "rsync".
Un exemple de commande suffisamment claire dans les informations qu'elle donne :
Code : Tout sélectionner
$ rsync -vrh --progress /home/user/www-dev/ pi@yourPiAdress:/var/www/
Attendez !
La visite n'est pas encore finie !
Je dois encore vous apprendre à utiliser votre service SSH comme un "petit" VPN ...
Ça vous tente de bypasser le filtrage de votre entreprise, de rentrer chez vous via votre serveur/RPI.
Ce qu'il vous faut c'est un service SSH qui tourne, un client SSH, et d'un ... Firefox ...
Ha, je vois que vous revenez ...
Et oui, il est possible d'utiliser le SSH comme un VPN :
Code : Tout sélectionner
$ ssh -D 127.0.0.1:8080 pi@yourPiAdress
Il ne vous reste plus qu'à configuré votre Firefox pour utiliser le "SOCKS" que vous venez de créer.
Pour cela, rien de plus simple : dans les "préférences" de Firefox, allez dans l'onglet "Avancé",
ensuit vous allez trouver un autre onglet "Réseau", vous y trouverez un bouton "Paramètres...",
celui-ci va vous ouvrir une dernière fenêtres, cochez l'option "Configuration manuelle du proxy",
enfin, remplissez les champs "Hôte SOCKS :" par votre adresse "127.0.0.1" et "Port :" par le port choisi, "8080" dans notre cas.
Appuyer sur le bouton OK, et c'est parti, vous naviguer depuis chez vous.
Une dizaine de tutos sur le net explique, image à l'appui, comment configurer un proxy socks.
Magic non ?
Hé ! Restez assis !
C'est pas fini !
Bon ok, je ne vous apprendrai pas a déporter une fenêtre graphique grâce au SSH ...
Tiens donc, il me semblais que vous deviez partir ...
Effectivement, il est possible de déporter une interface graphique grâce au SSH et de façons très simple, une seul option suffit :
Code : Tout sélectionner
$ ssh -X pi@yourPiAdress
A l'intention des utilisateurs Mac OS: L'option "-X" de votre client ssh est utilisable à condition d'avoir lancer un serveur X sur votre Mac!
Vous pouvez par exemple configurer votre carte wifi avec l'outil graphique "/usr/sbin/wpa_gui" comme ceci :
Code : Tout sélectionner
$ ssh -X pi@yourPiAdress /usr/sbin/wpa_gui
Aussi, n'essayez pas de lancer "startx", ca risque de ne pas fonctionner.
Voila, J'espère vous avoir donné une autre vision du service SSH de votre serveur/RPI.
Si vous avez des questions, n'hésitez pas.
Je vous souhaite à toutes et à tous, un bon amusement.