SSH

En informatique, secure shell ou SSH est un jeu de standards associé à un protocole réseau, qui permettent d'établir des connexions sécurisées d'un ordinateur local à un ordinateur distant. Il utilise une clé publique cryptographique pour authentifier l'ordinateur distant et (de manière optionnelle) pour permettre à cet ordinateur distant d'authentifier l'utilisateur. SSH permet de préserver la confidentialité et l'intégrité des échanges de données entre deux ordinateurs, en les cryptant et identifiant par messages codés d'authentification (MACs). SSH est typiquement utilisé pour se connecter à distance sur une machine et y exécuter des commandes, mais il permet également le tunneling, le reroutage de connexions vers des adresses arbitraires de ports TCP et X11. Il peut transférer des fichiers en utilisant ses protocoles associés SFTP ou SCP. Un serveur SSH par défaut, écoute sur le port TCP standard 22. Reférence extraite de wikipedia

Sécurisez convenablement vos connexions SSH

Autoriser les connexions SSH directes de l'administrateur n'est pas sûr. N'autorisons pas à l'utilisateur root à se connecter directement. Si nous ne voulons pas laisser aux personnes malveillantes l'opportunité de réussir en 10 minutes une attaque par dictionnaire de mots-de-passe sur notre serveur, il nous appartient de fixer des limites au délai et nombre de tentatives tolérés !

Pour rendre votre SSH plus sûr, utilisez simplement votre éditeur de texte préféré avec des permissions d'administration et ouvrez ce fichier :

/etc/ssh/sshd_config

Puis nous y localisons les paramètres dangereux afin de les modifier :

Port <port souhaité> : Ceci doit désigner le port que vous fixerez également dans votre routeur, afin d'assurer la continuité de connexion. Si vous ne savez pas comment le faire, alors peut-être ne devriez-vous pas utiliser ssh à distance. Debian utilise le port 22 par défaut, mais il est recommandé d'utiliser un port sortant de la gamme explorée normalement par les scanners. Mettons que vous voulions utiliser le port 5874, cela devient alors :

Port 5874

ListenAddress <IP de la machine ou interface réseau>: Là bien sûr, puisque vous faites suivre les connexions distantes SSH vers votre ordinateur, en fixant à cet effet un port déterminé de votre routeur, vous devrez, à moins d'utiliser un DNS local, utiliser une IP fixe. Entrez-là suivant votre paramétrage particulier ; elle se présentera sous cette forme :

ListenAddress 192.168.2.134

Ensuite, Protocol 2 est normalement déjà fixé dans Debian mais vérifiez-le au cas où.

LoginGraceTime <délai en secondes autorisé pour se loguer>: La valeur par défaut 600 secondes est absurde. Cela ne prend pas dix minutes d'entrer votre nom d'utilisateur et votre mot-de-passe. Aussi entrez quelque chose de plus raisonnable comme ceci :

LoginGraceTime 45

À présent vous avez 45 secondes pour vous loguer et les hackers n'ont plus 600 secondes à chaque essai pour cracker votre mot-de-passe.

PermitRootLogin <oui>: La raison pour laquelle Debian autorise par défaut les connexions directes de root est incompréhensible. Aussi réglerons-nous cette valeur sur 'no' (Non) :

PermitRootLogin no
StrictModes yes

MaxAuthTries <valeur>: Nombre de tentatives autorisées. Fixez-le à 3 ou 4 au maximum, mais pas plus :

MaxAuthTries 2

Vous pourrez vouloir ajoûter les options qui suivent, si elles n'existent pas :

AllowUsers <nom des utilisateurs autorisés à accéder via ssh séparés par un espace>

AllowUsers <xxx>: créez, via la commande adduser un utilisateur pour ssh seulement avec aucun droit. Ensuite entrez son nom ici:

AllowUsers nom_de_cet_utilisateur

PermitEmptyPasswords <xxx>: donnez à cet utilisateur, seul autorisé à se connecter via ssh, un joli mot-de-passe très long, impossible à deviner avant un million d'années. Une fois logué sous son identité, vous aurez juste à faire su pour devenir 'root' :

PermitEmptyPasswords no

PasswordAuthentication <xxx>: À l'évidence, pour vous connecter avec un mot-de-passe et non avec une clé, vous aurez besoin que cette option soit fixée sur yes (oui) :

PasswordAuthentication yes [sauf en cas d'utilisation de clés]

Votre fichier une fois sauvegardé avec vos paramétrages, relancez le démon ssh :

service ssh restart

À ce stade, et après avoir créé votre unique utilisateur habilité à n'utiliser que ssh, vous avez un serveur ssh sinon totalement, au moins un peu plus sécurisé.

Note: Si vous avez reçu un message d'erreur et que ssh ne vous autorise pas la connection, rendez vous dans votre $HOME et cherchez un dossier caché qui s'appelle .ssh, et enlevez le fichier qui s'appelle known_hosts et re-essayez. Cet erreur peut arriver lorsque vous avez une address dynamique (DCHP).

Utiliser les application X en réseau avec SSH

ssh -X vous permet de vous connecter à un ordinateur distant pour pouvoir afficher son interface graphique sur votre propre écran. Comme $utilisateur (remarquez bien que le X doive être en majuscule):

$ ssh -X nomdelutilisateur@xxx.xxx.xxx.xxx (ou IP)

Entrez le mot de passe correspondant à l'utilisateur sur l'ordinateur distant et lancez l'application depuis la console:

$ iceweasel OU oocalc OU oowriter Ou kspread

Certaine connexions lentes de votre PC peuvent s'améliorer en ajoutant un niveau de compression pour accélerer les transferts. Pour ce faire ajoutez une option. Sur les réseaux rapides l'effet est inverse:

$  ssh -C -X nomdelutilisateur@xxx.xxx.xxx.xxx (ou IP)

À lire:

$man ssh

Note: Si vous avez reçu un message d'erreur et que ssh ne vous autorise pas à vous connecter, rendez vous dans votre $HOME et cherchez un dossier caché qui s'appelle .ssh, et enlevez-en le fichier qui s'appelle known_hosts puis re-essayez. Cette erreur peut se produire lorsque vous avez une addresse dynamique (DCHP).

Copier fichiers et répertoires distants en SSH avec scp

scp s'utilise en ligne de commande (console/terminal) pour copier les fichiers entre machine hôtes en réseau. Il utilise une authentification ssh et sécurise les transferts de données ; aussi scp vous demandera mots et phrases de passes pour fonctionner.

Supposant que vous disposiez de permissions d'utilsateur de ssh sur un PC ou un serveur distant, scp vous permet de copier partitions, répertoires et fichiers sur et depuis cette machine vers ou depuis une autre machine sur laquelle vous disposez des mêmes prérogatives. Par exemple, ça peut s'appliquer aux machines de votre réseau domestique (ou d'autres machines ailleurs), pour réaliser le transfert de données stockées sur une clé USB connectée à votre PC.

Vous pouvez copier récursivement des partitions ou répertoires dans leur ensemble en utilisan l'option scp -r. Il est important de savoir que scp -r suivra les liens symboliques qu'il rencontrera dans son exploration des cibles.

Exemples:

Exemple 1: Copie d'une partition:

scp -r <utilisateur>@xxx.xxx.x.xxx:/media/disk1part6/ /media/diskXpartX/

Exemple 2: Copie d'un répertoire sur une partition déterminée : ici un répertoire 'photos" dans un $HOME:

scp -r <utilisateur>@xxx.xxx.x.xxx:~/photos/ /media/diskXpartX/xx

Exemple 3: Copie d'un fichier sur une partition déterminée : ici un fichier dans un $HOME:

scp <utilisateur>@xxx.xxx.x.xxx:~/nomdufichier.txt /media/diskXpartX/xx

Exemple 4: opie d'un fichier sur une partition:

scp <utilisateur>@xxx.xxx.x.xxx:/media/disk1part6/nomdufichier.txt /media/diskXpartX/xx

Exemple 5: Si vous vous trouvez déjà dans le répertoire/disque où vous voulez copier un répertoire ou fichier, utilisez ' . ' (point) :

scp -r <utilisateur>@xxx.xxx.x.xxx:/media/disk1part6/nomdufichier.txt . 

Exemple 6: Pour copier des fichiers d'un PC ou serveur vers un autre, (utilisez scp -r si s'il s'agit d'une partition ou d'un répertoire):

scp /media/disk1part6/nomdufichier.txt <utilisateur>@xxx.xxx.x.xxx:/media/diskXpartX/xx

À lire:

man scp

Accès ssh distant avec X-forwarding depuis un PC-Windows

ssh -X nom_d_utilisateur@xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx est l'adresse IP de l'ordinateur distant ou son URL (par exemple celle de son compte sur dyndns.org) et le nom d'utilisateur cité doit évidemment consister en un identifiant d'utilisateur existant vraiment sur la machine distante. Après une connexion fructueuse, lancez kmail par exemple et relevez votre courriel !

Assurez-vous que host.allow comporte une entrée permettant l'accès depuis des PC d'autres réseaux. Si vous êtes derrière un routeur ou un pare-feu-Nat, assurez-vous que le port 22 et/ou celui que vous avez configuré pour s'y substituer, soit bien re-routé vers votre ordinateur Linux.

SSH dans Konqueror

Konqueror et Krusader sont tous deux capables d'accéder à des données distantes, grâce au protocole utilisant sftp:// et utilise le protocole ssh.

Comment ça fonctionne:
1) Ouvrez une nouvelle fenêtre Konqueror
2) Entrez dans la barre d'adresse: sftp://nom_d_utilisateur@serveur_ssh.com

Exemple 1:

sftp://aptosid1@nom_d-hote_distant_ou_ip
 (Note: Une fenêtre popup s'ouvre et qui vous demande votre mot-de-passe ssh ; entrez-le puis cliquez sur OK)

Exemple 2:

sftp://nom_d_utilisateur:nom_d-hote_distant_ou_ip
Cette syntaxe vous permet de ne PAS être questionné sur votre mot-de-passe de connexion. Vous vous retrouvez alors directement connecté.

Dans l'environnement d'un réseau local (LAN)

ftp://nom_d_utilisateur@10.x.x.x ou 198.x.x.x.x
 (Note: Une fenêtre popup s'ouvre et qui vous demande votre mot-de-passe ssh ; entrez-le puis cliquez sur OK)

La connexion SSH est alors initialisée. Avec cette fenêtre de Konqueror, vous pouvez travailler sur les fichiers se trouvant le serveur ssh (les visualiser, les copier), tout comme si ceux-ci se trouvaient sur votre machine locale.

NOTE: Si vous avez configuré le port ssh pour utiliser un port autre que le 22 (par défaut), vous devez alors spécifier le port qu'utilisera sftp:

sftp://nom_d_utilisateur@ip:port

'nom_d_utilisateur@ip:port' est la syntaxe standard pour des programmes tels que sftp and smb.

SSHFS - Montage de répertoires distants

SSHFS est une méthode utilisant FUSE, permettant de monter des systèmes de fichiers distants, facile, rapide et sûre à utiliser. La seule exigeance qu'elle impose côté serveur est que le démon ssh soit actif.

Côté machine cliente, vous devrez probablement installer sshfs:
L'installation de fuse et groups ne sont pas nécessaires sous aptosid eros et versions supérieures, parce qu'ils sont déjà installés par défaut:

# apt-get update
# apt-get install sshfs

Après cette installation, vous devrez vous déconnecter puis vous reconnecter à nouveau.

Monter un système de fichiers distant vous sera alors facile, (pensez toutefois à créer en préalable le répertoire où vous monterez celui-ci) :

sshfs nom_d_utilisateur@machine_distante:répertoire point_de_montage_local

Dans cette commande nom_d_utilisateur désigne celui de votre compte sur la machine distante.

Si aucun répertoire de connexion n'est précisé dans cette commande, l'utilisateur distant sera logué par défaut dans son répertoire /home.Attention !la signalétique ":" est essentielle, y compris si aucun répertoire particulier n'est spécifié !

Après le montage le répertoire distant se comporte exactement de la même façon que n'importe quel répertoire local. Vous pouvez y naviguer, éditer des fichiers et même y lancer des scripts, comme vous le feriez dans vos répertoires locaux.

Pour démonter un répertoire distant, utilisez la syntaxe suivante :

fusermount -u point_de_montage_local

Si vous utilisez fréquemment SSHFS ce peut être intéressant d'ajoûter son entrée à votre fstab :

sshfs#username@remote_hostname://remote_directory /local_mount_point fuse user,allow_other,uid=1000,gid=1000,noauto,fsname=sshfs#username@remote_hostname://remote_directory  0 0 

Next uncomment user_allow_other in /etc/fuse.conf:

 
 # Allow non-root users to specify the 'allow_other' or 'allow_root'
 # mount options.
 #
 user_allow_other

Ceci fera en sorte que tout utilisateur membre du groupe fuse puisse monter le système de fichiers en utilisant la célèbre commande de montage :

mount /chemin/du/repertoire/de/montage

Avec cette ligne dans votre fstab vous pourrez évidemment aussi lancer la commande de démontage :

umount /chemin/du/repertoire/de/montage

Pour vérifier si vous êtes membres du groupe fuse entrez ceci :

cat /etc/group | grep fuse

Vous devez obtenir un résultat de ce type :

fuse:x:117: <nom_d_utilisateur>

L'identifiant ne sera pas listé dans le groupe "fuse" avant que vous nr vous soyiez comme demandé plus haut, déconnecté puis reconnecté à nouveau.

Si votre nom d'utilisateur n'est pas listé, employez la commande d'administration adduser comme suit :

# adduser <nom_d_utilisateur> fuse

après quoi votre nom d'utilisateur sera listé et vous pourrez utiliser les commandes :

mount point_de_montage_local

et

umount point_de_montage_local
Dernière révision du contenu le 01/11/2011 0650 UTC