Accès distant à l'aide de SSH
Utilisez des 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é tunnel SSH, transporte de manière sécurisée les données via une connexion SSH chiffré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-feu et les restrictions réseau.
Les trois principaux types de transfert de port SSH sont les suivants :
- Transfert de port local transfère un port du client au serveur SSH, puis au port de destination.
- Le transfert de port dynamique crée un serveur proxy SOCKS pour les communications sur une plage de ports.
- La commande Reverse Port Forwarding 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 du réseau public. Vous pouvez configurer un transfert de port local pour accéder à un service (tel qu'une base de données) sur un serveur distant. La base de données du serveur n'est pas exposée à l'interface du 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 l'ensemble du trafic sera transféré sur la base de données distante via le tunnel SSH.
Vous pouvez utiliser le transfert de port inverse pour permettre à une personne extérieure au réseau local d'accéder à 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 sur 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 :
- 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. Lorsqu'elle est omise, la valeur par défaut est
yes
, ce qui active les transferts de port TCP unique et le proxy SOCKS. AllowStreamLocalForwarding
Permet de transférer 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 du système client avec un port distant du système serveur. Cette configuration vous permet d'accéder à des services sur le système distant qui sont autrement inaccessibles parce que les services peuvent être exécutés derrière un pare-feu ou ne pas écouter 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. En cas d'omission, ssh effectue uniquement des liaisons sur les interfaces loopback. Pour lier toutes les interfaces, vous pouvez utiliser
0.0.0.0
ou::
.port
Numéro de port local. Vous pouvez utiliser tout numéro de port supérieur à
1024
.destination
Adresse IP ou nom d'hôte de l'ordinateur de destination. Si la destination se trouve sur le serveur distant, vous pouvez utiliser
localhost
.destination_port
Port sur l'ordinateur de destination.
user@remote_ssh_server
Adresse IP du serveur et de l'utilisateur SSH distant.
Par exemple :
ssh -L 8080:localhost:8888 user@192.168.1.20
Cela permet d'ouvrir une connexion SSH au serveur distant sur 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 d'indiquer un hôte de destination car toutes les connexions entrantes sur le port spécifié passent par le tunnel à un port dynamique sur l'ordinateur de destination.
Pour créer un port dynamique, utilisez l'option ssh -D
.
ssh -D <bind_address>:<port> <user>@<remote_ssh_server>
Transfert de port inverse
Un tunnel inverse transfère toute connexion reçue sur le serveur SSH distant vers le réseau client local.
Pour créer un port inverse, utilisez l'option ssh -R
.
- Pour le transfert inverse de port local :
ssh -R <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
- Pour le transfert inverse dynamique de port :
ssh -R <bind_address>:<port> <user>@<remote_ssh_server>
Accéder à distance aux applications basées sur X11 à l'aide de SSH
Le transfert X11 permet d'utiliser une connexion SSH pour ouvrir une application graphique basée sur X11 sur un système Oracle Linux distant et de 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 de/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, lors de la première connexion au serveur distant à l'aide du transfert X11, un message d'avertissement s'affiche :/usr/bin/xauth: file /home/user/.Xauthority does not exist
Vous pouvez ignorer cet avertissement car le fichier
.Xauthority
est créé automatiquement. - Redémarrez le service
sshd
pour que la modification prenne effet :sudo systemctl restart sshd.service
Ouvrez 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.
- Ouvrez une application graphique sur le serveur distant qui s'affiche sur le système local. Par exemple, pour exécuter l'éditeur de texte graphique
gedit
, entrez :L'ajout de l'esperluette (gedit &
&
) exécute l'application en arrière-plan, libérant ainsi le terminal pour les autres commandes.