Pourquoi les pages de manuel "ssh_config (5)" recommandent-elles que l' ControlPath
option contienne au moins les espaces réservés et %h
, afin d' identifier de manière unique chaque connexion partagée?%p
%r
Je pensais que plusieurs sessions devraient partager la même socket avec une connexion au même hôte. Ne serait-il pas logique alors d'avoir une définition simple telle que:
ControlPath ~/.cache/ssh/mux/%h
Au lieu de quelque chose comme:
ControlPath ~/.cache/ssh/mux/%r@%h:%p
Dans ma compréhension de la première définition, une connexion est partagée entre plusieurs sessions avec différents utilisateurs distants, vers le même hôte distant, sur différents ports distants.
Je veux avoir la première définition dans la section par défaut de l'hôte pour qu'il suffise de dire ssh -o ControlMaster=no
.
Je souhaite partager la connexion au même hôte distant entre toutes les sessions lancées par le même utilisateur local, quels que soient l'utilisateur distant et le port distant. Le socket du client maître doit vivre sous le répertoire personnel de l'utilisateur local.
la source
Réponses:
Ils peuvent. Cependant, notez que si vous vous connectez à un hôte à l'aide d'une connexion existante via
ControlPath
, quel que soit l'utilisateur auquel vous souhaitez vous connecter, vous serez connecté en tant qu'utilisateur d'origine de la connexion. Par exemple, sans connexion établie avec "quelque part":Cette session est bob @ quelque part.
Cette session sera également bob @ quelque part, car vous avez utilisé le même ControlPath et set
ControlMaster=no
; siControlMaster=yes
, vous seriez connecté en tant que sue, mais ssh aura ignoré votre argument ControlPath, comme impliqué dansman ssh_config
:Pour preuve, si
ControlMaster=yes
dans les deux cas, lorsque Bob quitte la socket ControlPath~/.ssh/somewhere
disparaîtra même si la session "sue" est toujours en cours d'exécution, ce qui signifie que la session sue n'a jamais utilisé cette socket .Donc, si vous souhaitez utiliser la même connexion,
%h
c'est très bien, mais attention, vous ne pouvez pas partager une connexion avec plusieurs utilisateurs distants différents - ssh ne vous le permettra pas.la source
Vous pouvez avoir plusieurs utilisateurs et plusieurs ports utilisés, même pour le même serveur. Moi-même, je me connecte à des centaines de systèmes sur les intranets de l'entreprise, la plupart ont plusieurs utilisateurs avec différentes fonctions ou serveurs d'applications. L'accès à userA est très différent de l'accès à userB, et la connexion principale devrait être différente. Plus succinctement, si vous deviez courir:
Comme vous pouvez le voir, nous n'obtenons pas de session OpenSSH avec userB, mais l'original avec userA. Cela signifie que le répertoire personnel, les autorisations et même l'authentification elle-même ne sont pas ceux attendus. En utilisant cela, si vous essayez de supprimer un fichier dans le répertoire de l'utilisateur B, alors a) il peut s'agir du mauvais fichier et b) il peut s'agir de mauvaises autorisations.
Si vous ne vous connecterez jamais à plus d'un utilisateur sur un seul serveur à l'aide d'un seul port, alors oui, l'utilisation
%h
pourrait être suffisante. Dans votre~/.ssh/config
fichier, vous souhaitez utiliser:Avec l'
ControlPersist
option, la connexion principale reste ouverte en arrière-plan jusqu'à ce qu'elle soit interrompue ou terminée avecssh -O exit
. Il s'agit d'une fonctionnalité intéressante de définition et d'oubli.Mais s'il existe une possibilité de se connecter à plusieurs utilisateurs sur un même hôte, vous voudriez quelque chose de plus sécurisé:
la source