Objectif

Après avoir mis en place l’affichage de fortunes, j’ai voulu avoir la possibilité de personnaliser un peu plus le démarrage de mes sessions SSH.

Le plus simple pour cela est d’utiliser les scripts MOTD qui sont très personnalisables.


Personnalisation

Dans le répertoire /etc/update-motd.d/ se trouvent plusieurs scripts qui servent à construire le MOTD qui sera affiché à l’ouverture d’une session SSH.


media:/etc/update-motd.d$ ls -lah
total 48k
drwxr-xr-x    2 root     root         4.0k Jun  2 21:09 .
drwxr-xr-x  162 root     root          12k Jun  2 12:37 ..
-rwxr-xr-x    1 root     root         1.2k Jun  2 19:54 00-header
-rwxr-xr-x    1 root     root         1.1k Jun  2 19:55 10-help-text
-rwxr-xr-x    1 root     root          149 Jan 25 11:32 90-updates-available
-rwxr-xr-x    1 root     root          129 Apr 19 09:23 91-release-upgrade
-rwxr-xr-x    1 root     root          142 Jan 25 11:32 98-fsck-at-reboot
-rwxr-xr-x    1 root     root          144 Jan 25 11:32 98-reboot-required
-rwxr-xr-x    1 root     root         1.1k Oct 21  2010 99-footer

Pour faire afficher les informations de son choix, il suffit de rajouter un script numéroté.

Pour connaitre les sessions SSH ouvertes sur le serveur, j’ai créé le script suivant


cd /etc/update-motd.d
sudo touch 11-custom
sudo chmod 755 11-custom

Voici le contenu du script, qui va m’afficher la date, l’uptime et le load average du serveur et le détail des connexions ouvertes.


#!/bin/sh
date
echo ""
uptime
echo ""
echo "Connexions en cours"
who -H
echo

A chaque connexion SSH, j’ai maintenant ça qui est affiché :


Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic i686)
Thu Jun  2 21:42:14 CEST 2011

 21:42:14 up  9:06,  5 users,  load average: 0.01, 0.05, 0.06

Connexions en cours
NAME     LINE         TIME         COMMENT
ramon    tty7         Jun  2 12:36 (:0)
ramon    pts/0        Jun  2 12:38 (grey-linux.local)
ramon    pts/1        Jun  2 12:42 (grey-linux.local)
ramon    pts/2        Jun  2 12:44 (grey-linux.local)
ramon    pts/3        Jun  2 12:53 (grey-linux.local)

Last login: Thu Jun  2 21:10:55 2011 from grey-linux.local


Activation de la bannière Login SSH

Il est possible d’afficher un message d’information au moment la connexion SSH, lorsque le système demande le mot de passe.

Pour cela, il y a un paramètre a activer dans le fichier de configuration SSH /etc/ssh/sshd_config, puis à saisir le message qui sera affiché dans le fichier idoine.


sudo vi /etc/sshd_config

Dans le ficher sshd_config il faut dé-commenter la ligne suivante :


Banner /etc/issue.net

Il faut ensuite éditer le fichier /etc/issue.net pour y saisir le message qu’on souhaite voir afficher :


*********************************************************************
****  Avertissement ! Accès aux seules personnes autorisées !   ****
****  Vos activités au cours de cette session sont susceptibles  ****
****  d' être enregistrées. Toute activité illicite fera l'objet ****
****  d'un recours en justice !                                  ****
*********************************************************************

Objectif

A la maison, ou au bureau, je me connecte régulièrement sur mes équipements en SSH. Et j’ai eu envie de personnaliser un peu les connexions, en affichant une citation à l’ouverture de la session. Il y a de nombreuses fortunes disponibles sur le net, et j’ai mis la main sur une qui cite les « Chuck Norris facts ».

Rapidement téléchargé, puis installé, j’ai maintenant le plaisir de découvrir de nouveaux facts à chaque connexion. :D

Afin de pouvoir installer cette fortune sur plusieurs machines rapidement, j’ai fait un petit script.


Téléchargement des facts

On télécharge le fichier. Pour ma part, j’ai créé une arborescnece pour dépposer les fortunes.


mkdir /usr/hsare/fortunes
cd /usr/share/fortunes
wget http://chucknorrisfacts.fr/fortunes/fortunes.txt

Sur ubuntu, il faut exécuter toutes les commande en super utilisateur (sudo).

On converti le fichier avec l’encodage UTF8 pour la prise en charge des accents et caractères spéciaux et on le renomme.


iconv -f iso-8859-1 -t utf8 fortunes.txt --output chuck

Puis on génère le fichier fortune


strfile -s -r chuck chuck.dat

On peut tester que l’appel à cette fortune fonctionne :


media:~$ fortune /usr/share/fortunes/chuck
Chuck Norris n'a pas de sang sur les mains, ses ennemis nettoient avant de mourir.

Il ne reste plus qu’à éditer le fichier ~/.bashrc et copier la ligne suivante


fortune /usr/share/fortunes/chuck


Script

Pour gagner du temps, j’ai fait un petit script.


#!/bin/bash

# Script d'installation des fortunes
# Creation : 2011/06/02
# Derniere modification : 2011/06/02
# Licence : GPL
#
# Syntaxe Ubuntu : # sudo ./FortunesInstall.sh

# Verification des droits utilisateurs pour l execution du script

if [ $EUID -ne 0 ]; then
   echo "Le script doit etre lance en root : # sudo $0 Arg OPT" 1>&2
   exit 1
fi

# Creation du dossier des fortunes
#mkdir /usr/share/fortunes

cd /usr/share/fortunes

# telechargement des "Chuck Norris Facts"
wget http://chucknorrisfacts.fr/fortunes/fortunes.txt

# Conversion et renommage du fichier
iconv -f iso-8859-1 -t utf8 /usr/share/fortunes/fortunes.txt --output /usr/share/fortunes/chuck

# Generation de la fortune
strfile -s -r /usr/share/fortunes/chuck /usr/share/fortunes/chuck.dat

# Configuration du bash pour afficher les fortunes
echo "fortune /usr/share/fortunes/chuck" >> ~/.bashrc


Autres fortunes

Si les facts de Chuck Norris ne vous convienennt pas, voici d’autres fortunes à télécharger et installer.
- http://www.fortunes-fr.org/data/litterature_francaise
- http://www.fortunes-fr.org/data/personnalites
- http://www.fortunes-fr.org/data/proverbes
- http://www.fortunes-fr.org/data/philosophie
- http://www.fortunes-fr.org/data/sciences

Le principe est le même, il faut télécharger le fichier puis le convertir à l’aide de la commande « strfile ».


 wget http://www.fortunes-fr.org/data/philosophie
 strfile philosophie philosophie.dat


Et avoir une vache qui parle

Il est possible d’avoir une vache (et d’autres animaux) qui cite les fortunes installées.


media:~$ fortune /usr/share/fortunes/chuck | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf | head -n1)
 ______________________________________
/ Jupiter est né de la cuisse de Chuck \
\ Norris                               /
 --------------------------------------
       \ (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~

Il suffit pour cela d’installer le paquet cowsay


aptitude install cowsay

Dans le fichier .bashrc, il faut ajouter la ligne suivante :


fortune /usr/share/fortunes/chuck | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf | head -n1)

Connexion SSH

Il y a toujours la nécessité d’avoir plusieurs consoles ouvertes, et d’en ouvrir de nouvelles pour se connecter sur d’autres équipements. Pour éviter d’avoir à saisir le password à chaque connexion, le plus simple est d’utiliser une clé SSH. Et cela permet d’utiliser les ressources du serveur distant sans à avoir à s’authentifier à chaque fois.

Afin de me simplifier la vie, j’utilise un petit script qui me permet rapidement de déclarer facilement une clé SSH sur le serveur distant.

Script

Le script est le suivant :


#!/bin/bash
cat ~/.ssh/id_dsa.pub | ssh $1 "cat - >>.ssh/authorized_keys"

Selon le type de clé créée localement, le fichier source peut être id_dsa.pub ou id_rsa.pub. Bien évidemment, il ne faut pas oublier de donner les droits d’exécution sur le script.

Le script, que j’ai nommé copy_ssh.sh est placé dans un répertoire de mon Home. Pour copier la clé sur le serveur distant, il me suffit d’exécuter le script, en plaçant comme argument le login et le serveur cible sous la forme login@serveur.

./copy_ssh.sh exploit@example.com

A l’exécution du script, le système distant demande un password. Lors de la connexion suivante il sera possible de se connecter sur le serveur sans saisir de password.

Création d’une clé SSH

Si le système client ne dispose pas encore d’une clé SSH, il est possible de la générer simplement en exécutant la commande suivante dans une console :

 ssh-keygen -t dsa