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 :
- Transfert de port local transmet un port du client au serveur SSH, puis au port de destination.
- Le transfert dynamique de port crée un serveur proxy SOCKS pour les communications sur une plage de ports.
- Transfert de port inverse transfère un port du serveur au client, puis au port de destination.
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 :
- A partir d'une ligne de commande, à l'aide des privilèges d'administration, connectez-vous à l'instance à l'aide de SSH.
- 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
- A partir d'une ligne de commande, à l'aide des privilèges d'administration, connectez-vous à l'instance à l'aide de SSH.
- Activez
X11Forwarding
dans le fichier/etc/ssh/sshd_config
.Si
X11Forwarding
est omis dans/etc/ssh/sshd_config
, la valeur par défaut estno
. Pour activer le transfert X11, ajoutez une entrée qui définit la valeur de ce paramètre suryes
.X11Forwarding yes
- 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.
- 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
- 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])?
- Saisissez yes.
Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
- 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 :L'ajout de l'esperluette (gedit &
&
) à la fin exécute l'application en arrière-plan, libérant ainsi le terminal pour d'autres commandes.