Créer votre clé SSH et l’installer sur un serveur distant.

Le but de cet article (aide-mémoire pour moi) est de vous montrer comment créer une clé SSH pour ensuite l’utiliser pour vous connecter à votre serveur distant.

Si ce n’est pas déjà fait, il faut tout d’abord vous installer un client SSH. Sur Debian et ses dérivés :

apt-get install openssh-client

Pour générer la clé nous allons utiliser l’algorithme RSA et une taille de clé de 2Ko (soit 2048 bits). Rappelons que les deux algorithmes les plus répandus pour SSH sont RSA et DSA.

ssh-keygen -t rsa -b 2048

À vous de voir si vous saisissez une passphrase ou pas mais du point de vue sécuritaire, c’est mieux. Deux fichiers ont été créés :

  • le fichier clé publique : ~/.ssh/id_rsa.pub,
  • le fichier clé privée : ~/.ssh/id_rsa.

Maintenant, il s’agit de copier la clé sur votre serveur :

ssh-copy-id -i ~/.ssh/id_rsa.pub utilisateur@domaineouip

La clé sera ajoutée au fichier .ssh/authorized_keys du dossier utilisateur du serveur distant. Vous pouvez à présent vous connecter avec cette clé sans rien ajouter à votre commande de connexion habituelle :

ssh utilisateur@domaineouip

Enjoy!

Héberger ses dépôts Git sur son serveur

Ce tutoriel décrit comment héberger ses dépôts Git sur son serveur Debian (et à priori dérivés) en suivant les étapes suivantes:

  1. Installer Git,
  2. Créer l’utilisateur git,
  3. Ajouter une clé SSH,
  4. Initialiser et travailler avec le dépôt,
  5. Visualiser ses dépôts.

Installer Git

Pour cela, rien de bien compliqué, il suffit d’installer le paquet git-core.

apt-get install git-core

Créer l’utilisateur git

Pour gérer les dépôts, il faut créer un utilisateur qui permettra de travailler avec le dépôt. Et pour le nom, rien d’original: git. Nullement besoin de mot de passe, il faut juste lui attribuer le git-shell comme shell de connexion afin qu’on ne puisse pas se connecter via SSH avec cet utilisateur.

adduser git --disabled-password --shell "/usr/bin/git-shell"

On se place dans le répertoire de l’utilisateur git pour la suite des opérations :

cd /home/git

Ajouter une clé SSH

Créer un répertoire .ssh ainsi qu’un fichier authorized_keys si besoin.

mkdir /home/git/.ssh
touch /home/git/.ssh/authorized_keys

Pour ajouter une clé, verser la fichier de la clé publique SSH sur votre serveur et saisissez la commande suivante :

cat /chemin/clessh.pub >> /home/git/.ssh/authorized_keys

Bien sûr, répéter l’opération pour chaque ajout d’utilisateur.

Initialiser et travailler avec le dépôt

Vu que nous sommes sur le serveur de dépôt nul besoin de répertoire de travail, il suffit d’ajouter l’option --bare au moment de l’initialisation. Par convention, le nom du répertoire se termine par .git.

mkdir /home/git/myRemoteRepository.git
cd /home/git/myRemoteRepository.git/
git --bare init

Pour que le dépôt puisse être cloné il vous faut faire un premier commit, pour se faire, sur votre machine locale (attention : il faut que vous ayez ajouté la clé SSH publique de votre utilisateur local) :

mkdir myLocalRepository
cd myLocalRepository
git init
touch README
git add README
git commit -am "Initial commit."
git remote add origin git@myServer:myRemoteRepository.git
git push origin master

Visualiser ses dépôts

Il existe pléthore d’outils pour visualiser (et faire pleins d’autres choses) mais je n’en citerai qu’un seul, très simple d’installation, développé avec Silex : GitList, tout est dans le fichier README.

Enjoy!

Git et certificat SSL non vérifié

S’il vous est arrivé d’avoir besoin de passer outre la vérification d’un certificat SSL pour travailler avec Git sachez que c’est assez simple. Il suffit de saisir la ligne suivante après vous être positionné dans votre dépôt :

git config http.sslVerify false

Vous pouvez également le rendre commun à tous les dépôts présents sur votre environnement :

git config --global http.sslVerify false

Pour le réactiver, il suffit de saisir :

git config http.sslVerify true

Vous pouvez revenir à l’état initial, c’est-à-dire que vous récupérerez la valeur par défaut de votre installation git:

git config --unset http.sslVerify

Enjoy!

Assigner tous les commit à un utilisateur

Parfois je fais des bêtises : j’oublie de faire des commits en mon nom. La solution est un peut radicale mais a le mérite de fonctionner. Pour assigner donc tous les commits d’une branche à un utilisateur :

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail'; GIT_COMMITTER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" HEAD

Il faut bien sûr adapter Newname et newemail avec les valeurs qui vont bien. Merci à Brian.

Enjoy !

Twitter Bootstrap 3, assistant social des développeurs back.

Cela fait quelques temps maintenant que j’ai sauté le pas en adoptant Twitter Bootstrap (dans sa version 3). C’est le moment de faire le point.

L’abstinence totale est plus facile que la parfaite modération.

Si une opération est faisable via un terminal, soyez sûr que je préférerais toujours ce point d’entrée à quelque interface que ce soit, aussi belle soit elle. Quoi de plus beau que le premier terminal que l’on ouvre le matin via un Ctrl + Alt + T ? Voilà que je deviens poète…
Un exemple : l’une des premières choses que j’ai appris sous Symfony2, c’est comment créer ses propres commandes afin de les exécuter dans un terminal.

L’enfer c’est les autres.

Mais voilà, il paraît qu’il existe des personnes que la ligne de commande rebute. Que Dieu nous préserve de ce type d’hérésie ! M’enfin, comme on vit dans le monde réel et qu’il faut bien créer des applications, notamment à destination interne de l’entreprise pour laquelle je travaille, il faut habiller les interfaces.

Mon binôme vous dirait qu’une page Web sans feuille de style ça marche très bien (il n’est pas aussi extrémiste que moi sur les interfaces graphiques malheureusement) mais je pense que ce n’est pas l’avis des utilisateurs lambdas qui eux veulent de jolis boutons, des menus déroulants et si en plus c’est responsive on risque d’atteindre l’extase !

C’est un roc !… C’est un pic !… C’est un cap !… Que dis-je, c’est un cap ?… C’est Bootstrap !

C’est là que Bootstrap entre en jeu, dans mon cas Bootstrap 3. C’est à l’occasion de la sortie de cette version, que j’ai sauté le pas. Et sincèrement je ne suis pas déçu. Il est vrai que je n’ai pas été assidu et que je ne saisis pas encore toutes les subtilités de ce Framework CSS et JS mais le peu que j’en sais me suffit amplement.

Et maintenant mes discussions autour de l’interface de mes applications peuvent ressembler à ceci :

  • Mon interlocuteur : Je veux du menu déroulant !
  • Moi : Tiens !
  • Mon interlocuteur : Les messages d’erreurs, d’avertissement, de confirmation ?
  • Moi : Trop facile !
  • Mon interlocuteur : Un slider, une grille pour la page d’accueil, un tableau bien agencé ?
  • Moi : S’il-te-plaît… Je suis le sensei du CSS avec Bootstrap ! Demandes moi des choses plus compliquées…
  • Mon interlocuteur : Enlever les coins arrondis des champs ?
  • Moi : Heu… Ton tableau combien de cellules ?
  • Mon interlocuteur : Modifier la couleur de fond de la page ?
  • Moi : Hé ! Je suis développeur back, moi !

La fin justifie les moyens et tous les moyens sont bons.

Finalement aujourd’hui tout le monde est content : les utilisateurs ont des interfaces, moi je ne me prends pas la tête sur du front. Certains regretteront le manque de diversité dans l’apparence des applications que je développe. Mais moi vous savez, moins je vois de CSS mieux je me porte…

Shutter : un utilitaire de capture d’écran

Récemment j’ai du faire un guide utilisateur pour une application interne que j’ai développé en Symfony2. J’ai cherché un utilitaire assez sympa qui fait capture + édition simple d’image et annotation. Je n’avais pas vraiment envie de me farcir l’outil de capture d’Ubuntu + the Gimp. Ils font bien leur boulot, mais je me suis dit qu’un outil centralisant les deux ce serait l’idéal.

Comme toujours, la documentation de la communauté française d’Ubuntu m’a été d’un grand secours. Et j’ai donc installé Shutter qui fait exactement ce dont j’ai besoin. Il intègre un système d’onglets très pratique. Je vais vous épargner un tutoriel sur son utilisation ainsi qu’à moi-même car il est très simple d’utilisation.

Sur le site du projet, on peut lire qu’on peut choisir d’éditer les captures avec The Gimp mais je vous avoue que je n’ai pas pousser l’utilisation aussi loin. Les fonctionnalités de base m’ont suffi.