GNU/Linux >> Tutoriels Linux >  >> Linux

SSH vers des hôtes distants via un proxy ou un bastion avec ProxyJump

Le concept d'hôtes bastion n'a rien de nouveau en informatique. Les hôtes Baston sont généralement des systèmes renforcés destinés au public qui servent de point d'entrée aux systèmes derrière un pare-feu ou un autre emplacement restreint, et ils sont particulièrement populaires avec l'essor du cloud computing.

Le ssh La commande a un moyen simple d'utiliser des hôtes bastion pour se connecter à un hôte distant avec une seule commande. Au lieu d'utiliser d'abord SSH vers l'hôte bastion, puis d'utiliser ssh sur le bastion pour se connecter à l'hôte distant, ssh peut créer lui-même les connexions initiale et secondaire à l'aide de ProxyJump .

ProxyJump

Le ProxyJump , ou le -J flag, a été introduit dans ssh versions 7.3. Pour l'utiliser, spécifiez l'hôte bastion auquel se connecter après le -J flag, plus l'hôte distant :

$ ssh -J <bastion-host> <remote-host>

Vous pouvez également définir des noms d'utilisateur et des ports spécifiques s'ils diffèrent d'un hôte à l'autre :

$ ssh -J user@<bastion:port> <user@remote:port>

Le ssh page man (ou manuel) (man ssh ) note que plusieurs noms d'hôte séparés par des virgules peuvent être spécifiés pour parcourir une série d'hôtes :

$ ssh -J <bastion1>,<bastion2> <remote>

Cette fonctionnalité est utile s'il existe plusieurs niveaux de séparation entre un bastion et l'hôte distant final. Par exemple, un hôte bastion public donnant accès à un ensemble d'hôtes de "niveau Web", au sein duquel un autre groupe protégé de "niveau base de données" peut être accessible.

Hôtes proxy codés en dur dans ~/.ssh/config

Le -J flag fournit une flexibilité pour spécifier facilement les hôtes proxy et distants selon les besoins, mais si un hôte bastion spécifique est régulièrement utilisé pour se connecter à un hôte distant spécifique, le ProxyJump la configuration peut être définie dans ~/.ssh/config pour établir automatiquement la connexion au bastion en route vers l'hôte distant :

### The Bastion Host
Host bastion-host-nickname
  HostName bastion-hostname

### The Remote Host
Host remote-host-nickname
  HostName remote-hostname
  ProxyJump bastion-host-nickname

En utilisant l'exemple de configuration ci-dessus, lorsqu'un ssh la connexion se fait comme suit :

$ ssh remote-host-nickname

Le ssh La commande crée d'abord une connexion à l'hôte bastion bastion-hostname (l'hôte référencé, par pseudonyme, dans le ProxyJump de l'hôte distant paramètres) avant de se connecter à l'hôte distant.

Une alternative :transférer stdin et stdout

ProxyJump est la manière simplifiée d'utiliser une fonctionnalité qui ssh possède depuis longtemps : ProxyCommand . ProxyCommand fonctionne en transférant l'entrée standard (stdin) et la sortie standard (stdout) de la machine distante via les hôtes proxy ou bastion.

La ProxyCommand lui-même est une commande spécifique utilisée pour se connecter à un serveur distant - dans le cas de l'exemple précédent, ce serait le manuel ssh commande utilisée pour se connecter en premier au bastion :

$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host

Le %h:%p arguments du -W drapeau ci-dessus spécifie de transférer l'entrée et la sortie standard vers l'hôte distant (%h ) et le port de l'hôte distant (%p ).

ProxyCommand dans ~/.ssh/config

Comme avec ProxyJump , ProxyCommand peut être défini dans le ~/.ssh/config fichier pour les hôtes qui utilisent toujours cette configuration :

Host remote-host
  ProxyCommand ssh bastion-host -W %h:%p

Avec ce paramètre dans ~/.ssh/config , n'importe quel ssh la connexion à l'hôte distant est réalisée en transférant stdin et stdout via une connexion sécurisée depuis bastion-host .

Le ssh La commande est un outil puissant. Bien qu'il puisse être principalement utilisé dans sa forme la plus simple, ssh user@hostname , il existe littéralement des dizaines d'utilisations, avec des drapeaux et des configurations pour établir des connexions d'un hôte à un autre. Découvrez ssh la page de manuel de (man ssh ) pour découvrir toutes les différentes options disponibles avec ce programme apparemment simple.


Linux
  1. Comment configurer des connexions SSH personnalisées pour simplifier l'accès à distance

  2. Comment connecter un hôte distant à l'aide de la commande ssh

  3. vérifier si le fichier existe sur l'hôte distant avec ssh

  4. Comment puis-je éviter la vérification d'hôte de SSH pour les hôtes connus ?

  5. Comment puis-je utiliser SSH avec un proxy SOCKS 5 ?

Commandes SSH sous Linux avec exemples d'utilisation

Comment se connecter à Internet via un serveur distant via une connexion Ssh ?

Peut ping/ssh via LAN mais pas avec Wi-Fi

sshfs échoue avec l'hôte distant déconnecté

Rsync avec SSH demandant un mot de passe distant

Connexion SSH via un tunnel SSH inversé (distant)