Git : date de commit personnalisée

Dans certains cas de figure très particuliers, il peut être utile de spécifier une date de commit personnalisée.

Par exemple, je viens de créer un dépôt GitHub contenant l’ensemble des versions stables de Magento 1.x.
Je voulais que les dates du dépôt suivent scrupuleusement celles des publications officielles de Magento afin de conserver une cohérence.

Logiquement, git utilise la date courante lorsqu’on effectue un commit !

Spécifier sa date de commit

Pour spécifier une date personnalisée de commit, on va utiliser 2 variables d’environnement utilisées en interne par git : GIT_AUTHOR_DATE  et GIT_COMMITTER_DATE  :

Les dates fournies peuvent être au format RFC 2822 ou au format ISO 8601.

Modifier la date après le commit

Il est également possible de modifier la date après avoir effectué le commit (bien que ce ne soit généralement pas recommandé).

La sortie devrait ressembler à quelque chose comme :

Il faut maintenant forcer le push sur le dépôt distant

Sources :

Astuce : keyserver.ubuntu.com connection refused

Alors que je m’apprêtais à installer un serveur MariaDB en suivant la procédure standard, j’ai été confronté à une erreur lors de l’ajout de la clé APT :

Pourtant, j’ai déjà lancé cette commande des dizaines de fois, sur un environnement identique, sans jamais n’avoir eu aucun problème !

En cause : le pare-feu

En effet, par défaut, le serveur de clé est appelé sur le port 11371 !

Hors, jusqu’à présent, j’installais les services avant de paramétrer le pare-feu du serveur : ça passé donc sans sourciller !

Solutions

On peut régler le problème de 2 façons différentes :

  1. Ajouter une règle au pare-feu
  2. Accéder au serveur sur le port 80

Ajouter une règle au pare-feu

Attention : dans ce cas la règle est ajoutée à la fin de toutes les règles déjà existantes.
Si la dernière règle rejette déjà tout ce qui n’est pas spécifier avant, cette nouvelle règle sera simplement ignorée.

Lister les règles existantes en affichant les numéros de ligne :

Repérer une règle du style :

ou encore

et on ajoute la nouvelle règle avant ces règles :

Quelques explications s’imposent :

Précédemment nous avions utilisé le paramètre -A , qui veut dire « APPEND » : donc ajouter aux règles existantes.
Dans le dernier cas, nous avons utiliser le paramètre -I , qui veut dire « INSERT ». On a spécifier après l’action « OUTPUT » le numéro de la ligne où nous désirions insérer notre règle. Cela n’écrase pas la règle existante sur la ligne en question mais décale toutes les règles suivantes.

Accéder au serveur sur le port 80

Si l’on ne veut pas toucher au pare-feu, on peut se contenter d’accéder au serveur de clé en http (donc sur le port 80) en le spécifiant dans la ligne de commande :

Notez que keyserver.ubuntu.com est devenu hkp://keyserver.ubuntu.com:80

Voilà !

Authentification par clés SSH

Maintenant que nous avons créé nos clés SSH, nous allons voir comment les utiliser afin d’utiliser l’authentification par clés SSH.

Pour rappel, l’authentification par clés SSH est régie par 3 composantes :

  • clé publique : c’est la clé que l’on partage avec les hôtes;
  • clé privée : c’est la clé qui doit resté confidentielle;
  • passphrase : le « mot de passe » qui sécurise notre clé privée.

Nous allons donc, dans un premier temps, fournir notre clé publique aux hôtes sur lesquels nous désirons nous authentifier.

Renseigner sa clé publique

L’authentification s’effectue sur une machine hôte pour un utilisateur donné.

Les clés publiques sont stockés dans le fichier ~/.ssh/authorized_keys.

On se connecte donc sur le serveur à « l’ancienne », c’est à dire en ssh par mot de passe:

puis on va éditer le fichier authorized_keys pour y ajouter notre clé publique:

On copie-colle enfin l’ensemble de notre clé publique à la fin de ce fichier. Il est tout à fait possible qu’il soit vide (voir même qu’on soit en train de le créer).

On enregistre (Ctrl + O) et on quitte (Ctrl + X) nano.

Ok, c’est beau ! Mais comment je récupère ma clé publique ?

Récupérer sa clé publique sous Linux

Comme nous l’avons vu dans le précédent article, sous linux, les clés sont généralement enregistrées dans les fichiers id_rsa (clé privée) et id_rsa.pub (clé publique).

Il suffit donc de lire le fichier ~/.ssh/id_rsa.pub pour récupérer sa clé publique sous linux :

Récupérer sa clé publique sous Windows

Sous Windows, les choses sont un peu plus fastidieuse…

Il faudra à nouveau utiliser le logiciel PuTTYgen pour extraire notre clé publique de la clé privée que nous avons précédemment générée.

  1. Ouvrir le logiciel PuTTYgen, cliquez sur le bouton « Load » et sélectionnez la clé privée :

    PuTTYgen : charger une clé privée
    PuTTYgen : charger une clé privée
  2. Renseigner la passphrase :

    PuTTYgen : renseignement de la passphrase
    PuTTYgen : renseignement de la passphrase
  3. Récupérer la clé publique associée à la clé privée :

    PuTTYgen : récupérer la clé publique
    PuTTYgen : récupérer la clé publique

Il ne reste plus qu’à coller notre clé publique dans le fichier ~/.ssh/authorized_keys de notre hôte distant.

Sous linux : se faciliter la vie

Sous linux il est tout à fait possible de grandement se faciliter la vie grâce à une seule ligne de commande qui s’occupe tout seule de récupérer votre clé publique et de l’ajouter à la liste des clés autorisées d’un hôte distant :

Un message vous indiquera probablement que l’identité du serveur hôte est actuellement inconnue et vous demandera si vous désirez poursuivre : répondez « yes ».

Pour finir, il faudra renseigner le mot de passe de l’utilisateur distant.

La sortie finale de la commande devrait ressembler à peu de choses près cela :

Et voilà, vous êtes maintenant prêt à utiliser l’authentification par clés SSH pour vous connecter à un serveur distant.

Générer des clés SSH sous Linux et Windows

L’utilisation de clés SSH est un moyen de s’authentifier de manière sécurisée. Nous allons voir ensemble comment générer des clés SSH à la fois sous Linux et également sous Windows.

L’authentification SSH s’effectue au travers de 3 composants :

  • Une clé publique : elle sera transmise aux différents hôtes sur lesquels on désire s’authentifier;
  • une clé privée : elle permet de prouver son identité aux hôtes sur lesquels on s’authentifie;
  • une passphrase : elle permet de sécuriser sa clé privée.

Sans ces 3 éléments, il est impossible de s’authentifier.

Générer des clés SSH sous linux

La génération de clés SSH sous linux est relativement simple puisqu’elle s’effectue avec une seule commande :

Sans paramètre, la clé générée sera de type RSA en 2048 bits.

Nous voulons créer une clé en 4096 bits, nous utilisons la commande suivante :

Suite à cette commande, nous obtenons une sortie similaire à la suivante :

Bien sûr, nous avons pris soin de répondre aux questions posées, à savoir le nom du fichier dans lequel enregistrer les clés (2 fichiers sont créés : id_rsa contient la clé privée, id_rsa.pub contient la clé publique), ainsi que la passphrase permettant de sécuriser la clé privée.

Par défaut, les fichiers sont enregistrés dans ~/.ssh.

Générer des clés SSH sous Windows

Sous Windows, nous utiliserons le logiciel PuTTYgen. Pour le télécharger, il suffit de se rendre sur le site officiel ici.
Nul besoin d’installation, le fichier téléchargé est directement utilisable.

Double-cliquez dessus pour lancer l’application (Windows peut vous assurer qu’il a bloqué l’application pour votre sécurité : n’en faites rien, le logiciel est sûr et vous pouvez valider son lancement).

PuTTYgen : générer des clés SSH sous Windows
Interface PuTTYgen

Tout comme sous linux, le chiffrement par défaut est réalisé sous 2048 bits. Nous changeons cette valeur pour qu’elle soit de 4096 bits :

PuTTYgen : 4096 bits
PuTTYgen : 4096 bits

Puis nous cliquons sur le bouton « Generate« .

Il nous est alors demandé de bouger la souris à l’intérieur du cadre vide afin de générer un peu de hasard !

Lorsque la clé privée est générée, il faut la sécuriser en renseignant une passphrase :

PuTTYgen : passphrase
PuTTYgen : passphrase

Vous pouvez maintenant enregistrer la clé privée dans le fichier de votre choix.

Nous verrons dans un prochain article comment utiliser ces clés pour s’authentifier sur un serveur distant.

Lister les paquets installés sous Debian/Ubuntu

Il est parfois utile de savoir quels sont les paquets installés sur sa distribution Debian/Ubuntu. Une commande simple permet de réaliser cette tâche.
Associée à la commande « grep », on peut facilement filtrer les résultats pour faire ressortir une recherche particulière.

Lister la totalité des paquets installés

Cette commande liste la totalité des paquets installés sous forme de tableau. 4 colonnes sont fournies :

  • Name : le nom du paquet installé
  • Version : la version installée du paquet
  • Architecture : l’architecture pour laquelle le paquet est développé
  • Description : une courte description de l’utilité du paquet

La commande suivante réalise la même opération mais en simplifiant la sortie :

Filtrer les résultats

En associant les commandes précédentes avec « grep », on peut facilement filtrer les résultats pour n’obtenir qu’un éventail des paquets installés.

Imaginons que l’on veuille vérifier les paquets installés concernant « apache », on tapera la commande suivante :

Pour retourner les résultats qui ne satisfont pas le patter, il suffit d’ajouter l’option « -v » à la commande « grep » :

Commande zip : exclure des répertoires de l’archive

Dans cet article, nous allons jouer un peu avec la commande zip en ligne de commande sous linux afin de compresser un répertoire tout en excluant certains sous-répertoires.

Installer la commande zip si nécessaire :

Si ce n’est pas déjà le cas, pour installer la commande zip sous ubuntu/debian lancez la commande suivante :

L’arborescence utilisée pour l’exemple :

  • root/
    • composer.json
    • composer.lock
    • .git/
    • .gitignore
    • src/
    • tests/
    • vendor/

Exclure complètement les répertoires de l’archive

On désire zipper le répertoire root en excluant les répertoires « .git/ » et « vendor/ ». Voici la commande à lancer :

Conserver les répertoires mais pas les fichiers

Si l’on veut conserver les répertoires mais ne pas inclure les fichiers contenus à l’intérieur, la commande devient :

Aller plus loin

Pour plus d’informations je vous conseille d’aller jeter un œil sur la manpage en français.