Sì, è possibile che l'utente root su B esegua il snoop del traffico, anche se non dici esattamente quale sistema operativo è. Su Linux, questo potrebbe includere il programma ttysnoop
o usare un debugger contro sshd.
Ho usato molto tunnel-in-a-tunnel (oltre a SSH su PPP su SSH, che è ancora un altro livello), e non ha necessariamente un serio carico di prestazioni o di latenza. Ovviamente, c'è un sovraccarico alcuni , ma non più della solita variabilità di una connessione.
Considera il caso peggiore per un singolo personaggio. In Telnet che verrebbe inviato come frame Ethernet con un carico utile di 46 byte (20 byte intestazione IP, 20 byte intestazione TCP, 1 byte di dati, ma lo standard Ethernet richiede 46 byte di carico utile minimo, 42 in un ambiente VLAN). In SSH sarebbe un carico utile di 68 byte ("La dimensione minima di un pacchetto è 16 (o la dimensione del blocco di cifratura, qualunque sia maggiore) byte (più 'mac').", RFC 4253 ); Vedo 92 byte che guardano una connessione reale con Wireshark. In SSH-over-SSH c'è il sovraccarico del telegramma SSH; Vedo un carico utile di 140 byte.
L'invio di molti dati, SSH utilizza frame (su TCP, quindi non limitato dalla dimensione del pacchetto) fino a 32k byte, quindi l'overhead del doppio tunneling è trascurabile. Mi ci vogliono 20 secondi per trasferire un file 2M su una VM a cui posso accedere direttamente tramite un tunnel SSH o tramite SSH. Se I dd
un file di testo 36k, richiede circa 84 pacchetti quasi tutti i 1380 byte lunghi da inviare da una sessione ssh "semplice".
Infine, il comando esatto che hai dato,
ssh user@B ssh user@C
probabilmente non farà quello che ti aspetti; questo secondo "ssh" probabilmente darà il messaggio "Lo pseudo-terminale non verrà assegnato perché stdin non è un terminale", e otterrai una shell che non ti chiede di inserire o supportare la modifica da riga di comando. Invece prova
ssh user@B -t ssh user@C
Si noti inoltre che questo potrebbe effettivamente portare a più piccoli pacchetti (= overhead dell'header TCP e ritardo reale) se l'host B non può tenere il passo con i dati che vi entrano.