Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

« Rebonds SSH » : différence entre les versions

De AJLSM
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
Ligne 77 : Ligne 77 :
L'invite demande uniquement le mot de passe du serveurB.
L'invite demande uniquement le mot de passe du serveurB.
== Resources ==
== Resources ==
https://goteleport.com/blog/ssh-proxyjump-ssh-proxycommand/
* https://goteleport.com/blog/ssh-proxyjump-ssh-proxycommand/
 
* https://www.redhat.com/sysadmin/ssh-proxy-bastion-proxyjump
https://www.redhat.com/sysadmin/ssh-proxy-bastion-proxyjump
* https://medium.com/maverislabs/proxyjump-the-ssh-option-you-probably-never-heard-of-2d7e41d43464
 
https://medium.com/maverislabs/proxyjump-the-ssh-option-you-probably-never-heard-of-2d7e41d43464

Dernière version du 21 février 2023 à 08:21

Permet de se connecter directement à un serveur B (distant) en passant par le serveur A (distant) depuis son PC.

Les directives OpenSSH ProxyJump et ProxyCommand indiquent au client SSH comment se connecter à un serveur distant via un serveur intermédiaire - souvent appelé hôte de saut, serveur de saut ou serveur bastion.

ProxyJump est disponible depuis la version 7.5 de OpenSSH. Suppose la prise en charge de la redirections par les hôtes intermédiaires. C'est une façon simplifiée d'utilisation de ProxyCommand.

ProxyCommand offre une plus grande flexibilité des connexions de route.

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.

Les arguments %h et %p de l'indicateur -W ci-dessus spécifient 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).

l'argument nc pour netcat.

Configuration basique

[modifier | modifier le wikicode]

Ajoutez la configuration suivante dans le fichier ~/.ssh/config ou créez le s'il n'existe pas.

Host serveurB
	User [utilisateur1]
	HostName [Domaine ou IP du serveurB]
	ProxyCommand ssh serveurA nc %h %p

Host serveurA
	HostName [Domaine ou IP du serveurA]
	User [utilisateur2]

Dans ce scénario, on lance la connexion ssh direction vers le serveurB. Le serveurA va demander le mot de passe, puis le serveurB va demander un mot de passe.

Config avec une clé ssh

[modifier | modifier le wikicode]

C'est le scénario typique : l'authentification vers serveurA se fait avec votre clé ssh et le serveurB demande un mot de passe.

Ce type de rebond est nécessaire dans le cas d'une politique de mise en place de DMZ avec un poste où l'on doit se connecter en premier pour ensuite atteindre le serveur où se trouve les applications à maintenir, par exemple.

Cela permet de se connecter directement en SFTP avec des outils graphique comme jEdit par exemple.

Commencez par ajouter votre clé pour ne pas avoir à renseigner la paraphrase :

ssh-add

Et tapez votre paraphrase à l'invite. La paraphrase est stockée et elle ne sera plus demandée en mode "saisie" lors de la connexion.

Pour vérifier si votre cléest stockée :

ssh-add -l

Dans le fichier ~/.ssh/config, ajoutez l'attribut IdentityFile et le PATH vers votre clé.

Pour conservez de façon permanente l'ajout de la paraphrase, ajoutez les attributs UseKeychain yes et AddKeysToAgent yes

Host serveurB
	User [utilisateur1]
	HostName [Domaine ou IP du serveurB]
	ProxyCommand ssh serveurA nc %h %p

Host serveurA
	HostName [Domaine ou IP du serveurA]
	User [utilisateur2]
	UseKeychain yes
	AddKeysToAgent yes
	IdentityFile ~/.ssh/id_rsa

Ensuite, lancez la commande :

ssh serveurB

L'invite demande uniquement le mot de passe du serveurB.

La commande ProxyJump s'écrit aussi -J. Ajoutez la configuration suivante dans le fichier ~/.ssh/config ou créez le s'il n'existe pas.

Configuration avec clé SSH

[modifier | modifier le wikicode]
Host serveurB
	User [utilisateur2]
	HostName [Domaine ou IP du serveurB]
	ProxyJump serveurA

Host serveurA
	HostName [Domaine ou IP du serveurA]
	UseKeychain yes
	AddKeysToAgent yes
	User [utilisateur1]
	IdentityFile ~/.ssh/id_rsa

Ensuite, lancez la commande :

ssh serveurB

L'invite demande uniquement le mot de passe du serveurB.