Si vous avez l’habitude d’administrer des serveurs, le SSH n’a plus de secret pour vous. Par contre, si vous débutez dans ce domaine, j’espère que cet article vous rendra service. Nous allons donc parler une nouvelle fois du protocole SSH qui permet de se connecter à des serveurs de manière totalement sécurisé à l’aide de clé publique et privée. Dans ce tutoriel, vous allez voir comment envoyer un fichier d’un serveur A vers un serveur B. Je me suis décidé à faire ce tutoriel suite à une mésaventure et je ne pouvais pas rapatrier les données chez moi, car j’ai une mauvaise connexion Internet, enfin elle est très stable, mais le débit est faible. C’est comme ça quand on a pas la fibre malheureusement …
J’avais des données sur un serveur qui pesaient plusieurs Go, et il était donc impossible pour moi de les rapatrier pour les renvoyer vers un nouveau serveur. Étant donné que c’est un cas assez courant, finalement, surtout si vous avez un énorme volume de données, autant utiliser la connexion bien plus puissante entre les serveurs, c’est ce que nous allons voir aujourd’hui. Rassurez-vous, ce n’est pas si compliqué, si vous avez un minimum l’habitude du protocole SSH. Allez, c’est parti, on attaque la première partie de ce tutoriel pour envoyer un fichier d’un serveur vers un autre !
Autoriser le serveur source à se connecter au serveur cible avec une paire de clés SSH
Pour commencer, on va devoir générer une nouvelle paire de clés pour pouvoir échanger nos données à travers SSH et la commande SCP. On lance donc cette célèbre commande que vous devez maintenant sûrement connaître, il s’agit tout simplement de :
ssh-keygen -t rsa
Vous pouvez alors nommer votre nouvelle clé. Ici, j’ai décidé de l’appeler sobrement transfert. Ensuite, libre à vous de lui assigner un mot de passe ou non. Même si l’utilisation d’une clé SSH est déjà une sécurité en elle-même. C’est à vous de décider pour cette partie. Voici à quoi ça ressemble sur mon serveur A qui va envoyer les données vers le serveur B :
Les clés, se sont alors placées dans mon dossier d’utilisateur sur ma distribution Ubuntu du serveur que j’utilise. Ce n’est pas très élégant, et on ne veut pas les laisser ici.
Vu que ce n’est pas le bon endroit, on va aller les ranger dans le dossier .ssh pour être propre cohérent. Pour cela, je transfère les deux clés à l’aide de la commande mv :
mv /home/ubuntu/transfert /home/ubuntu/.ssh/transfert
mv /home/ubuntu/transfert.pub /home/ubuntu/.ssh/transfert.pub
Voilà, à présent, ma paire de clés SSH publique et privé sont bien rangé dans le dossier .ssh sur mon serveur source :
Je fais alors une commande cat pour récupérer le contenu de ma clé publique qui va me servir dans la suite de ce tutoriel :
cat /home/ubuntu/.ssh/transfert.pub
On arrive dans la partie la plus intéressante de ce tutoriel. Il est temps de se connecter en SSH, sur mon serveur B qui est le serveur cible sur lequel je vais envoyer mes données. Je vais alors mettre le contenu de cette clé publique dans le fichier authorized_keys de mon serveur cible qui se trouve normalement ici :
vi /home/forge/.ssh/authorized_keys
C’est bon, on a fait le plus dur. À partir de maintenant, mon serveur source à le droit de se connecter à mon serveur cible pour lui envoyer des données. Pour utiliser vos clés plus facilement n’oubliez pas que vous pouvez faire un fichier de configuration pour SSH qui vous permettra d’éviter de préciser la clé à chaque fois avec le paramètre -i si vous voulez gagner du temps.
Envoyer un fichier du serveur source vers le serveur cible avec la commande SCP de SSH
Je ne vais pas ici entrer dans les détails de la commande SCP, ni vous parler de script pour par exemple, sauvegarder vos données et les envoyer vers un autre serveur. Ici, on va juste utiliser la commande SCP pour montrer ce que ça donne à la main. Je pense que je ferai d’autres articles sur le sujet, mais pour le moment, c’est juste pour illustrer le concept.
Je vais lancer la commande SCP sur un fichier d’exemple et je lui précise bien d’utiliser la clé que l’on a créé juste avant avec le paramètre -i que je vous avait expliqué ici. Il est bien évidemment possible de gérer ceci avec un fichier config pour SSH. Pour rester le plus simple possible, je lance donc ma commande SCP avec ce paramètre -i qui pointe vers ma clé Transfert que j’ai créé au début de ce tutoriel. Puis dans le second paramètre de cette commande, je précise mon fichier et enfin, j’indique les informations du serveur cible et là où je veux que mon fichier soit transféré dessus.
scp -i ~/.ssh/transfert /home/ubuntu/test.txt forge@46.101.116.60:/home/forge/
Voilà, j’ai récupéré mon fichier sur le serveur cible et finalement, ce n’était pas si compliqué, vous voyez. Je pense que je ferai très prochainement une série d’articles pour automatiser tout ça avec des scripts bash histoire que ce soit encore plus propre et surtout pratique. Au moins, maintenant, vous avez l’idée générale pour commencer à transférer des fichiers d’un serveur vers un autre. J’espère que ce tutoriel vous aura aidé surtout pour les débutants, car ce n’est pas toujours simple de se mettre à SSH et encore moins l’administration de serveur directement en ligne de commande.