Connexion automatique avec ssh (clef rsa)

Vous souhaitez transférer de façon automatique une fichier via scp au travers d’un script sans que celui ne vous demande de saisir un mot de passe …
Ceci est tout à fait possible en utilisant le mode Batch de scp avec une authentification par partage de clef publique. Le système est simple à mettre en oeuvre :

Sur la machine depuis laquelle on souhaite se connecter :
Pour commencer il faut créer pour l’utilisateur qui va executer le script un couple de clefs publiques/privées. Pour ce, lancez pour cet utilisateur la commande ssh-keygen -t dsa en repondant par Entrée à chaque question. Cette commande va créer deux fichiers dans le répertoire ~/.ssh : id_dsa et id_dsa.pub.

Sur la machine sur laquelle l’on souhaite se connecter :
Copiez ensuite le contenu du fichier id_dsa.pub dans le fichier ~userCible/.ssh/authorized_keys. userCible étant l’utisitateur sous lequel vous allez vous connecter lors du transfert sur la machine distante.
Enfin, vérifier les doits d’accès qui doivent être 700 pour le répertoire .ssh et 644 pour le fichier authorized_keys.

Tester

Maintenant l’accès à la machine cible se fait simplement par la commande suivante : scp -B -i ~/.ssh/id_dsa userCible@destination:~/

Gare aux Auto-Virus

Qu’est-ce qu’un auto-virus (hormis un terme personnel qui vient de sortir de mon clavie) ?
C’est un virus qui par opposition aux virus classiques s’installe tout seul sur l’ordinateur sans réelle erreur de la part de l’utilisateur.
Par opposition aux virus commun que l’on déclenche en lançant pour une raison ou une autre un executable infecté.

Le dernier en date a fait du bruit, il profitait d’un trou de sécurité dans un des service réseau de Windows pour s’installer et se propager. L’utilisateur connecté à Internet était infecté sans toucher à son ordinateur.

Le nouveau trou de sécurité découvert dans les images jpeg pourrait être aussi dangereux vu le nombre d’images échangées par Mail et l’inoffencivité habituelle de ce type de fichier. D’autre part, un pirate malin pourrait falsifier des images sur des sites internet et ainsi très discrètement propager son virus … Les idées ne manqueront pas !

En cinq mots : METTEZ A JOUR VOS SYSTEMES !

Gestion des encodages des charactères dans les emails en java

Pour vous éviter de chercher 3 plombe la solution au problème des accents et autres caractères non US dans les e-mail, voici comment faire :

Comme dirait l’autre, RTFM, ceci dit la JavaDoc est tellement limpide sur ce point …

Donc, il suffit de spécifier lors de l’ajout des sujet et texte l’encodage “iso-8859-1″ et le tour est joué :

MimeMessage message = new MimeMessage(session);

message.setSubject(sujet,”iso-8859-1″);
message.setText(texte,”iso-8859-1”);
message.setHeader(“Content-Type”, “text/plain; charset=iso-8859-1”);
message.setHeader(“X-Mailer”,”Java”);

Ajout de bibliothèques à PERL

PERL a celà de bien qu’il intègre son outil de téléchargement de bibliothèque … Encore faut-il avoir sous la main une doc pour s’en servir :

  • taper la commande perl -MCPAN -e shell;
  • répondre aux questions
  • enfin taper install Package::Module

C’est tout simple !

Faire executer un script par root

Admettons que vous ayez un acces utilisateur lambda a une de vos machine, par exemple au travers d’un script telnet HTTP. Vous souhaitez passer une commande qui necessite les droits root. Pour celà, la solution consiste à lancer la commande suivante :

echo RootPassword | exec su root -c Commande

Eventuellement, la Commande peut être l’appel à un script : “sh script”

Connaitre la version et le type d’un serveur web

Pour connaitre le type de serveur web a qui l’on a affaire, une solution est de se connecter à l’aide de la commande telnet sur le serveur et de l’interroger :

telnet adresse_serveur 80
puis tapez (rien ne va s’afficher)
GET / HTTP / 1.0
suivit de 2 carriage return

Le serveur doit vous renvoyer un message avec en entête sa version et son nom.

Renomer une liste de fichiers avec des espaces

Lorsque l’on souhaite renommer un ensemble de fichiers contenant des caractères espace, l’utilisation d’une boucle de type :

for i in `find . -name “*” ; do

done

n’est par vraiement envisageable, en effet, les espaces identifiés comme des séparateurs de mots font que i prend pour valeur des sous ensembles du nom.

Pour résoudre ce problème, une solution consiste à modifier la variable IFS dont le rôle est de définir les séparateur de mots dans le shell bash.
La solution peut être la suivante :

export IFS=$’\n’
for i in `find . -name “*” ; do

done

i prend alors successivement les noms des fichiers, espaces inclus.

Changer l’encodage des caractères avec Apache2

Lors du passage de ce site sur Apache2, j’ai été confronté à des problèmes d’affichage des caractères, Mozilla n’affichait d’ailleurs même pas tous les caratères.
Ce problème vient de l’encodage par défaut des caractère qui est en UTF-8. Ce format ne semble pas totalement supporté par les borwsers ou alors mes documents sources n’utilisent pas ce format.

La solution consiste donc à modifier le format par défaut pour revenir à quelque chose de standard. Pour celà, il faut éditer /etc/apache2/mod_mime-default.conf et changer l’option AddDefaultCharset … pour AddDefaultCharset ISO-8859-1 par exemple.

Dans le cas de l’utilisation d’apache1, la solution est la même hors mis que le fichier doit être /etc/httpd/httpd.conf.

Notez que cet encodage est plutot obsolete et ne gère entre autre pas l’euro, ISO-8859-15 serait peut être plus adapté.

Complément : A noter que j’ai aussi rencontré des problèmes avec les accents lorsque je faisais des include de pages html depuis une jsp. Je ne saurais vraiment en expliquer la cause mais la solution simple et rapide que j’ai utilisé a été de renomer mes fichiers .html en .jsp ! depuis ça fonctionne vraiement mieux.