Limites du multiplexage SSH

26

J'ai l'entrée suivante dans mon .ssh/configdossier

Host AAA
    User BBB
    HostName CCC
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

Ce qui précède me permet de multiplexer plusieurs sessions ssh via la même connexion ssh sans avoir à taper le mot de passe chaque fois que j'ai besoin d'une nouvelle session (tant que la connexion principale reste ouverte).

Cependant, j'ai remarqué qu'une fois que j'ai un nombre relativement élevé de connexions multiplexées (~ 7), je ne peux pas ajouter plus de sessions à la même connexion multiplexée, et je commence à obtenir l'erreur suivante:

> ssh -X AAA

mux_client_request_session: session request failed: Session open refused by peer
Password: 

Mes questions:

Pourquoi ai-je cette erreur? Y a-t-il une limite dans le nombre de sessions ssh que je peux multiplexer dans la même connexion? Puis-je modifier cette limite? Serait-ce une mauvaise idée?

Amelio Vazquez-Reina
la source
2
Je ne peux pas répondre directement aux questions, mais je peux offrir quelques suggestions sur la recherche du problème. Étant donné que l'homologue a refusé la connexion, je commencerais par consulter les journaux du système auquel vous vous connectez. Voir si sshd donne des erreurs. Sinon, augmentez le LogLevel et réessayez. Si vous trouvez un message de log qui n'est pas immédiatement évident et que la recherche de la phrase n'aide pas, vous pouvez utiliser grep sur le code source. Les messages d'erreur sont souvent entourés d'ensembles de conditions - l'une (ou certaines) d'entre elles n'étaient pas remplies, et c'est pourquoi ce message est apparu.
Shawn J.Goff

Réponses:

26

Le sshddémon sur le serveur limite le nombre de sessions par connexion réseau. Ceci est contrôlé par l' MaxSessionsoption dans /etc/ssh/sshd_config. Il MaxStartupspeut également être nécessaire d'augmenter l' option si vous utilisez un grand nombre de sessions. (Voir man sshd_configpour plus de détails.) L'option de modification de la MaxSessionslimite a été introduite dans OpenSSH 5.1 et il semble que le nombre était précédemment fixé à 10. Si vous dépassez MaxSessionssur le serveur, vous verrez sshd[####]: error: no more sessionsdans le journal du serveur.

rozcietrzewiacz
la source
4

J'ai rencontré ce problème sur un serveur avec une version antérieure d'OpenSSH. Je contrôle le serveur et j'ai résolu le problème en créant deux CNAME dans ma configuration nommée:

realhost.myexample.com.      IN  A       XXX.XXX.XXX.XXX
realhost2.myexample.com.     IN  CNAME   realhost.myexample.com.
realhost3.myexample.com.     IN  CNAME   realhost.myexample.com.

Ensuite, dans ma configuration client locale ssh:

ControlMaster auto
ControlPath ~/.ssh/%r_%p_%h

host realhost
hostname realhost.myexample.com

host realhost2
hostname realhost2.myexample.com

host realhost3
hostname realhost3.myexample.com

L'instruction ControlPath est ainsi les noms de socket de contrôle ne marchent pas les uns sur les autres.

C'est tout, mais pour le rendre facile à gérer, j'ai écrit un script wrapper pour 'ssh' du côté client. Il comprend qu'il existe des «groupes» d'hôtes (dans ce cas, realhost, realhost1, realhost2 comprennent un groupe). Lors de l'émission de «sshwrapper realhost», s'il n'y a pas de canaux ouverts, les trois sont ouverts et une session est lancée. La prochaine fois qu'il est exécuté, il compte les connexions ouvertes par canal et ouvre la nouvelle session dans le canal avec le moins de connexions.

Avec un vrai et deux «faux» hôtes, je peux me connecter 30 fois avant de recevoir une erreur. La connexion est extrêmement rapide, sauf que le temps initial prend une seconde ou deux, car les trois canaux de contrôle sont ouverts à ce moment-là.

Joe
la source
Le script sonne comme un véritable gain de temps et il serait vraiment utile. Si vous l'avez toujours, pourriez-vous le partager avec le public?
thefourtheye
Je ne suis pas sûr que ce soit approprié ici, car ce n'est pas la réponse à une question. De plus, je viens de l'écrire pour moi et il fonctionne sur un client Mac (pour se connecter à mes serveurs Linux). Le code analyse la sortie «ps» et devrait être modifié pour fonctionner sous Linux, en raison de la syntaxe «ps» différente.
joe
C'est suffisant. Merci d'avoir partagé l'idée générale.
thefourtheye
J'ai placé le script sur moosiefinance.com:8081/sshm.zip.
joe
Génial ... Merci beaucoup ... Permettez-moi de passer par là
thefourtheye