Limiti del multiplexing SSH


26

Ho la seguente voce nel mio .ssh/configfile

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

Quanto sopra mi permette di multiplexare più sessioni ssh attraverso la stessa connessione ssh senza dover digitare la password ogni volta che ho bisogno di una nuova sessione (purché la connessione principale rimanga aperta).

Tuttavia, ho notato che una volta che ho un numero relativamente elevato di connessioni multiplexate (~ 7), non riesco ad aggiungere più sessioni alla stessa connessione multiplex e inizio a ricevere il seguente errore:

> ssh -X AAA

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

Le mie domande:

Perché visualizzo questo errore? Esiste un limite nel numero di sessioni ssh che posso multiplexare nella stessa connessione? Posso cambiare questo limite? Sarebbe una cattiva idea?


2
Non posso rispondere direttamente alle domande, ma posso offrire alcuni suggerimenti su come rintracciare il problema. Dal momento che il peer ha rifiutato la connessione, vorrei iniziare guardando i log sul sistema a cui ti stai connettendo. Vedi se sshd dà errori. In caso contrario, aumentare LogLevel e riprovare. Se trovi un messaggio di log che non è immediatamente ovvio e la ricerca della frase non aiuta, puoi usare grep sul codice sorgente. I messaggi di errore sono spesso circondati da una serie di condizioni: una (o alcune) di esse non sono state soddisfatte ed è per questo che è apparso questo messaggio.
Shawn J. Goff,

Risposte:


26

Il sshddaemon sul server sta limitando il numero di sessioni per connessione di rete. Questo è controllato MaxSessionsdall'opzione in /etc/ssh/sshd_config. Inoltre MaxStartups, potrebbe essere necessario aumentare l' opzione se si utilizza un numero elevato di sessioni. (Vedi man sshd_configper maggiori dettagli.) L'opzione per modificare il MaxSessionslimite è stata introdotta in OpenSSH 5.1 e sembra che il numero fosse precedentemente fissato in modo fisso a 10. Se eccedi MaxSessionssul server, vedrai sshd[####]: error: no more sessionsnel registro del server.


4

Ho riscontrato questo problema su un server con una versione precedente di OpenSSH. Controllo il server e ho risolto il problema creando due CNAME nella mia configurazione denominata:

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.

Quindi, nella mia configurazione del client ssh locale:

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'istruzione ControlPath è quindi i nomi dei socket di controllo non si scambiano.

Questo è tutto, ma per semplificare la gestione, ho scritto uno script wrapper per "ssh" sul lato client. Comprende che ci sono "gruppi" di host (in questo caso realhost, realhost1, realhost2 comprendono un gruppo). Quando si emette "sshwrapper realhost", se non ci sono canali aperti, vengono aperti tutti e tre e viene avviata una sessione. La prossima volta che viene eseguito, conta le connessioni aperte per canale e apre la nuova sessione nel canale con il minor numero di connessioni.

Con un host reale e due "falsi", posso collegarmi 30 volte prima di ricevere un errore. L'accesso è estremamente veloce, tranne per il fatto che il tempo iniziale richiede uno o due secondi, poiché tutti e tre i canali di controllo vengono aperti in quel momento.


La sceneggiatura sembra un vero risparmio di tempo e sarebbe davvero utile. Se lo hai ancora, ti dispiacerebbe condividerlo con il pubblico?
thefourtheye

Non sono sicuro che sia appropriato qui, dal momento che non è la risposta a una domanda. Inoltre, l'ho appena scritto da solo e funziona su un client Mac (per accedere ai miei server Linux). Il codice analizza l'output 'ps' e dovrebbe essere modificato per essere eseguito su Linux, a causa della diversa sintassi 'ps'.
joe

Giusto. Grazie per aver condiviso l'idea generale però.
thefourtheye,

Ho inserito la sceneggiatura su moosiefinance.com:8081/sshm.zip.
joe

Fantastico ... Grazie mille ... Lasciami passare attraverso questo
theourourye
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.