<h2>But de ce document</h2>
<p class="spip">Ce document me sert de <strong class="spip">mémo</strong> pour <strong class="spip">installer et utiliser SSH sous Linux</strong>. Je le diffuse en espérant qu’il puisse servir à d’autres personnes.</p>

<p class="spip">Les instructions de ce document sont données pour une Debian ETCH, mais il est possible de les adapter aux autres distributions.</p>

<h2>Pré-requis</h2>
<p class="spip">Avoir installé une Debian de Base :
<br /></p>
<li> cf mon autre document sur ce sujet : <a href="http://www.coagul.org/article.php3?id_article=158" class="spip_out">http://www.coagul.org/article.php3 ?id_article=158</a>
<h2>Installation et configuration de SSH</h2>
<p class="spip">Installation du paquet :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install openssh-client openssh-server</code></p>

<p class="spip">Une fois les paquets installés, le client et le serveur seront directement utilisables. Il est possible depuis ce poste de se connecter à un autre serveur SSH ou il est possible de se connecter à ce poste via SSH depuis un autre poste.</p>

<p class="spip">Cependant, il est préférable pour augmenter la sécurité, de modifier le fichier de configuration :</p>

<p class="spip">Fichier de configuration du démon sshd :</p>

<p class="spip"><code class='spip_code' dir='ltr'>/etc/ssh/sshd_config</code></p>

<p class="spip">Pour interdire la connexion directe sous root, modifier la ligne suivante :</p>

<p class="spip"><code class='spip_code' dir='ltr'>PermitRootLogin no </code></p>

<p class="spip">Ajouter la ligne suivante pour autoriser uniquement pglinux</p>

<p class="spip"><code class='spip_code' dir='ltr'>AllowUsers pglinux </code></p>

<p class="spip">Redémarrer le démon pour prendre en compte les modifications :</p>

<p class="spip"><code class='spip_code' dir='ltr'>/etc/init.d/ssh restart</code></p>

<h2>Commandes pour se connecter à un serveur distant</h2>
<p class="spip">La commande suivante, permet de se connecter au serveur pgdebian sous l’identité de celui qui lance la commande :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh pgdebian</code></p>

<p class="spip">Il est possible de préciser un autre login avec le paramètre -l :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh -l root pgdebian</code></p>

<p class="spip">Il est possible aussi d’utiliser la syntaxe suivante pour se connecter à pgdebian sous root :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh root@pgdebian</code></p>

<h2>Connexion à un serveur SSH via un autre serveur SSH</h2>
<p class="spip">Si vous avez deux serveurs SSH mais qu’il est nécessaire de se connecter au premier pour pouvoir accéder au deuxième, cette commande permet de réaliser les deux connexions :</p>

<p class="spip"><code class='spip_code' dir='ltr'>ssh root@serveur1 -t ssh root@serveur2</code></p>

<p class="spip"><strong class="spip">Remarque</strong> : Cela est surtout intéressant si la connexion aux serveurs se fait via une clé public (cf chapitre suivant)</p>

<h2>Connexion SSH en utilisant une clé privée et une clé public</h2>
<p class="spip">Une connexion SSH en utilisant une clé privée et une clé public est plus sécurisée qu’une connexion classique par mot de passe. De plus elle permet d’éviter de ressaisir un mot de passe à chaque connexion.</p>

<p class="spip">Création de la clé privée et de la clé public :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh-keygen -t dsa</code></p>

<p class="spip">Après la saisie de la pass-phrase (Mot de passe long), cette commande va générer deux fichiers dans le dossier «  /.ssh » :
<br /></p>
<li> La clé privée : id_dsa
<br /><li> La clé public : id_dsa.pub
<p class="spip">Ensuite, il faut exporter la clé public sur le ou les serveurs distant à utiliser avec ssh :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh-copy-id -i .ssh/id_dsa.pub root@NomDuServeurSSH</code></p>

<p class="spip">Après la copie de cette clé, à chaque connexion via ssh, la pass-phrase sera demandée.</p>

<p class="spip">Pour éviter de saisir la pass-phrase (qui normalement est encore plus longe que le mot de passe), il est possible d’utiliser le démon ssh-agent qui se chargera de mémoriser la pass-phrase pour éviter de la ressaisir :</p>

<p class="spip">Sous Debian le démon ssh-agent est lancé automatiquement au démarrage de la session.</p>

<p class="spip">La commande suivante, permet de mémoriser la pass-phrase une fois pour toute pendant la durée de la session :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh-add</code></p>

<p class="spip">Une fois cette commande saisie, il est possible de se connecter aux différentes serveurs ssh sans saisir aucun mot de passe ou pass-phrase.</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh root@NomDuServeurSSH</code></p>

<h2>Copier des fichiers entre un serveur et un client ssh avec scp</h2>
<p class="spip">La commande <strong class="spip">scp</strong> livrée avec le paquet <strong class="spip">ssh</strong>, permet de copier des fichiers entre le serveur et le client ssh d’une manière sécurisée.</p>

<p class="spip">La commande suivante, permet d’envoyer dans le répertoire /tmp du serveur pgdebian le fichier /etc/fstab disponible sur le serveur local :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ scp /etc/fstab root@pgdebian:/tmp</code></p>

<h2>Exécuter une commande à distance avec ssh</h2>
<p class="spip">La commande <strong class="spip">ssh</strong>, permet également d’exécuter une commande sur un serveur distant.</p>

<p class="spip">Par exemple, la commande suivante, permet de se connecter sous root sur l’ordinateur pgdebian et d’exécuter la commande halt pour arrêter l’ordinateur :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh root@pgdebian halt</code></p>

<h2>Lancer une application graphique disponible sur un serveur distant</h2>
<p class="spip">Pour lancer une application graphique sur un serveur distant, il suffit de se connecter avec l’option « -X » :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh -X user@serveur</code></p>

<p class="spip">Et de lancer l’application graphique en ligne de commande.</p>

<p class="spip">Le paramètre « -C » permet de comprimer les données ce qui améliore (un peu) la réactivité :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ssh -CX user@serveur</code></p>

<p class="spip"><strong class="spip">Remarque</strong> : Une méthode plus efficace pour lancer des applications graphiques est de passer par un serveur FreeNX et un client NoMachine comme expliqué dans ce mémo :
<br /></p>
<li> <a href="http://www.coagul.org/article.php3?id_article=330" class="spip_out">http://www.coagul.org/article.php3 ?id_article=330</a>
<h2>Ajouter dans « Konsole » des signets vers des serveurs SSH</h2>
<p class="spip">Pour les utilisateurs de KDE et de Konsole, il est possible d’ajouter dans les signets des liens vers des serveurs SSH. Pour cela, il faut :
<br /></p>
<li> Menu « Signet / Modifier les signets »
<br /><li> Menu « Signet / Nouveau signet »
<br /><li> Saisir dans la zone URL « ssh ://user@serveur »
<h2>Lien pour avoir plus d’informations</h2>
<p class="spip"><code class='spip_code' dir='ltr'>$ man ssh </code></p>

<p class="spip">ou : <a href="http://www.delafond.org/traducmanfr/man/man1/ssh.1.html" class="spip_out">http://www.delafond.org/traducmanfr/man/man1/ssh.1.html</a></p>

<h2>Historique des modifications</h2>
<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Version</strong></th><th scope='col'><strong class="spip">Date</strong></th><th scope='col'><strong class="spip">Commentaire</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>0.1</td><td>19/11/04</td><td>Création par Tony GALMICHE</td></tr>
<tr class="row_odd"><td>0.2</td><td>20/12/04</td><td>Ajout chapitres « Commandes pour se connecter à un serveur distant » et « Exécuter une commande à distance avec rsh »</td></tr>
<tr class="row_even"><td>0.3</td><td>30/05/05</td><td>Ajout « Connexion SSH en utilisant une clé privée et une clé public »</td></tr>
<tr class="row_odd"><td>0.4</td><td>03/07/06</td><td>Mise à jour suite aux remarque sur le forum</td></tr>
<tr class="row_even"><td>0.5</td><td>06/08/08</td><td>Ajout « Connexion à un serveur SSH via un autre serveur SSH » et « Ajouter dans « Konsole » des signets vers des serveurs SSH » et « Lancer une application graphique disponible sur un serveur distant »</td></tr>
</tbody>
</table>