Accès distant à l'aide de SSH

Utilisez les connexions SSH pour accéder en toute sécurité aux ressources, réseaux et applications distants.

Accès à distance aux services et réseaux à l'aide de SSH

Le transfert de port SSH, également appelé tunneling SSH, transporte les données de manière sécurisée via une connexion SSH cryptée entre un système local et un système distant. Une fois qu'un tunnel SSH est établi, le client SSH écoute sur un port local spécifié et transmet tout trafic arrivant sur ce port via la connexion au port distant correspondant.

En chiffrant les données en transit, le transfert de port SSH garantit que les informations sensibles sont sécurisées et inaccessibles, permet un accès sécurisé aux services et réseaux distants sans exposition directe à Internet et contourne les pare-feux et les restrictions réseau.

Les trois principaux types de transfert de port SSH sont les suivants :

Vous pouvez utiliser le transfert de port pour accéder à un service qui n'est pas exposé à l'interface de réseau public. Vous pouvez configurer un transfert de port local pour accéder à un service (comme une base de données) sur un serveur distant. La base de données sur le serveur n'est pas exposée à l'interface de réseau public, mais vous pouvez créer un tunnel entre un ordinateur local et le port du serveur de base de données interne. Vous pouvez ensuite vous connecter à localhost et tout le trafic est transmis via le tunnel SSH à la base de données distante.

Vous pouvez utiliser le transfert de port inverse pour donner à une personne en dehors du réseau local l'accès à un service interne. Par exemple, vous pouvez montrer à un autre développeur une application Web que vous avez développée sur la machine locale. L'ordinateur n'ayant pas d'adresse IP publique, l'autre développeur ne peut pas accéder à l'application via Internet. Toutefois, si vous avez accès à un serveur SSH distant, vous pouvez configurer le transfert de port inverse pour fournir l'accès développeur.

Configuration du transfert de port sur le serveur

Pour configurer le transfert de port SSH, procédez comme suit :

  1. A partir d'une ligne de commande, à l'aide des privilèges d'administration, connectez-vous à l'instance à l'aide de SSH.
  2. Modifiez le fichier /etc/ssh/sshd_config. Vérifiez au minimum les paramètres suivants :
    • AllowTCPForwarding

      Autorise le transfert de port TCP. En cas d'omission, la valeur par défaut est yes, ce qui permet les transferts de port TCP unique et la génération de proxy SOCKS.

    • AllowStreamLocalForwarding

      Permet le transfert des sockets de domaine UNIX. Lorsqu'elle est omise, la valeur par défaut est yes.

Transfert de port local

Le transfert de port local via SSH met en correspondance un port local sur le système client avec un port distant sur le système serveur. Cette configuration vous permet d'accéder à des services sur le système distant qui sont autrement inaccessibles car les services peuvent s'exécuter derrière un pare-feu ou ne pas être à l'écoute sur une interface de réseau public.

Pour créer un tunnel de transfert TCP direct, utilisez l'option ssh -L :

ssh -L <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • bind_address

    Facultatif et affecte une interface locale pour écouter les connexions. S'il est omis, ssh se lie uniquement aux interfaces de loopback. Pour établir une liaison sur toutes les interfaces, vous pouvez utiliser "0.0.0.0" ou " :".

  • port

    Numéro de port local. Vous pouvez utiliser n'importe quel numéro de port supérieur à 1024.

  • destination

    IP ou nom d'hôte de la machine de destination. Si la destination se trouve sur le serveur distant lui-même, vous pouvez utiliser localhost.

  • destination_port

    Port sur l'ordinateur de destination.

  • user@remote_ssh_server

    Utilisateur SSH distant et adresse IP du serveur.

Par exemple :

ssh -L <8080>:localhost:<8888> <user>@<129.145.0.164>

Cela permet d'ouvrir une connexion SSH au serveur distant à l'adresse 192.168.1.20 et d'ouvrir un tunnel vers le port localhost 8888.

Transmission de port dynamique

Utilisez le transfert de port dynamique pour que le client SSH écoute sur un port de liaison spécifié et agisse en tant que serveur proxy SOCKS. Vous n'avez pas besoin de spécifier un hôte de destination car toutes les connexions entrantes sur le port spécifié sont transférées via le tunnel vers un port dynamique sur la machine de destination.

Pour créer un transfert de port dynamique, utilisez l'option ssh -D.

ssh -D <bind_address>:<port> <user>@<remote_ssh_server>

Transfert de port inverse

Un tunnel inverse transmet toute connexion reçue sur le serveur SSH distant au réseau client local.

Pour créer un transfert de port inverse, utilisez l'option ssh -R.

  • Pour le transfert inverse du port local :
    ssh -R <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • Pour le transfert inverse de port dynamique :
    ssh -R <bind_address>:<port> <user>@<remote_ssh_server>

Accès à distance aux applications basées sur X11 à l'aide de SSH

Le transfert X11 vous permet d'utiliser une connexion SSH pour lancer une application graphique basée sur X11 sur un système Oracle Linux distant et l'utiliser à partir d'un système local. Le système distant n'a pas besoin d'avoir un serveur X11 ou un environnement de bureau graphique en cours d'exécution, mais le système local doit avoir un service compatible X11 en cours d'exécution.

Activer le transfert X11 sur le serveur distant

  1. A partir d'une ligne de commande, à l'aide des privilèges d'administration, connectez-vous à l'instance à l'aide de SSH.
  2. Activez X11Forwarding dans le fichier /etc/ssh/sshd_config.

    Si X11Forwarding est omis dans /etc/ssh/sshd_config, la valeur par défaut est no. Pour activer le transfert X11, ajoutez une entrée qui définit la valeur de ce paramètre sur yes.

    X11Forwarding yes
  3. Installez les packages X11 :
    dnf install xorg-x11-xauth xorg-x11-fonts-\* xorg-x11-utils dbus-x11
    Si vous n'avez jamais exécuté d'application graphique sur le serveur distant, un message d'avertissement s'affiche lors de la première connexion au serveur distant à l'aide du transfert X11 :
    /usr/bin/xauth: file /home/user/.Xauthority does not exist

    Vous pouvez ignorer cet avertissement en tant que . Le fichier Xauthority est créé automatiquement.

  4. Redémarrez le service sshd pour que la modification prenne effet :
    sudo systemctl restart sshd.service

Lancer une application à distance à l'aide du transfert X11

  1. Connectez-vous au serveur distant à l'aide de SSH :
    ssh -X <user>@<server1.example.com>
    
    The authenticity of host 'remote-server (192.168.122.120)' can't be established.
    ECDSA key fingerprint is SHA256:uYwFlgtP/2YABMHKv5BtN7nHK9SHRL4hdYxAPJVK/kY.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
  2. Saisissez yes.
    Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
  3. Lancez une application graphique sur le serveur distant qui s'affiche sur votre système local. Par exemple, pour exécuter un éditeur de texte graphique tel que gedit, entrez :
    gedit &
    L'ajout de l'esperluette (&) à la fin exécute l'application en arrière-plan, libérant ainsi le terminal pour d'autres commandes.