[TUTO] Une autre vision du SSH
Posté : dim. 30 nov. 2014 23:01
Bonsoir à toutes et à tous,
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 :
Si vous utilisez une paire de clés SSH, aucun mot de passe vous sera demandé par votre serveur/RPI lors de l'établissement de la connexion,
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 :
Cette commande s’exécute sur votre serveur/RPI, mais est affichée sur votre terminal, comme une commande traditionnelle.
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):
ou la même demande exécutée en appelant le script de démarrage du service NTP (avec clés SSH) :
Une fois la commande exécutée, nous récupérons la main sur votre terminal local.
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" :
en pratique :
Mais avec une petite subtilité pour scp puisque nous devons spécifier l'utilisateur ainsi que l'adresse de votre serveur/RPI :
en pratique :
Dans ce cas, nous avons copier un fichier "fichier.txt" depuis le dossier "/premier/dossier/" de notre ordinateur vers le dossier "/second/dossier/" notre serveur/RPI avec l'utilisateur "pi".
Il est possible de copier un fichier depuis notre serveur/RPI vers notre ordinateur :
Dernier possibilité, il est possible de copier un fichier depuis un serveur/RPI vers un autre serveur/RPI, en passant par notre ordinateur.
Tout comme avec "cp, il est également possible avec scp de copier une dossier vers un serveur/RPI avec l'option "-r" (r pour récursive) :
Et nous retrouverons les fichiers du dossier "pi" dans le dossier "/tmp/pi/" de notre serveur/RPI.
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 :
Tout comme "scp", "rsync" est capable de transferer une fichier depuis votre ordinateur vers un serveur/RPI distant :
ou l'inverse :
Mais je dois avouer que ce n'est pas son utilité principale.
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 :
Avec cette commande, nous synchronisons le contenu de notre dossier local "/home/user/www-dev/" avec le dossier distant "/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 :
Ceci termine le "petit" tour d'horizon de la commande "rsync".
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 :
Avec cette option, vous ouvre un "SOCKS" sur votre client local (127.0.0.1) sur le port 8080.
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 :
Avec l'option "-X" vous donnez accès a votre serverX (le système qui permet l'affichage sur un Linux) à votre serveur/RPI distant.
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 :
Pour l'anecdote, j'ai essayé la commande, et au final, l'outil "wpa_gui" s'est greffé dans ma barre de notification gnome de mon portable alors que, depuis cette application, je pouvais géré le wifi de mon RPI B+.
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.
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.