Comment envoyer des commandes à la session ssh «intérieure»?

32

Imaginez un scénario où je suis connecté à un serveur (que nous appellerons "Wallace") à partir de ma machine locale, et à partir de là, je me connecte à un sshautre serveur (que nous appellerons "Gromit"):

laptop ---ssh---> Wallace ---ssh---> Gromit

Ensuite, la session ssh de Wallace à Gromit se bloque, et je veux la tuer. Si j'entre ~.pour tuer ssh, cela tue la session ssh de mon ordinateur portable vers Wallace, car le ~est intercepté par cette session ssh et .est pris comme une commande pour tuer la session. Comment envoyer une commande à la session ssh entre Wallace et Gromit? Comment puis-je tuer mon ssh "intérieur"?

iconoclaste
la source
FYI: Certaines dispositions de clavier peuvent nécessiter d'appuyer deux fois sur la touche «~» pour imprimer un caractère «~». J'utilise souvent screen donc quand une connexion ssh est perdue je peux simplement démarrer un autre shell en tuant cette session.
math

Réponses:

42

Ajoutez un autre tilde (par exemple, tapez ~~.). Chaque tilde successif est mangé par la session ssh la plus externe qui n'en a pas encore mangé, mais si le personnage suivant est un autre tilde, il est transmis à la session suivante de.

Si, à partir de gromit 1 , vous vous dirigez vers un troisième hôte (appelons-le wensleydale), alors vous ~~~.abandonnez la session à wensleydale et vous renvoyez à une invite sur gromit.

1 Et quel grand serveur c'est; combien de fois ai-je entendu une remarque de développeur "cracking host, gromit"?

MadHatter soutient Monica
la source
2
Connexes: The Telnet Song
voretaq7
1
Oh, c'est merveilleux; Je ne peux pas croire que je ne l'avais pas rencontré auparavant.
MadHatter prend en charge Monica
Ce serait génial s'il y avait un moyen d'obtenir un retour visuel de la distance dans la pile, au cas où vous auriez laptop --> Wallace --> Gromit --> Shaun --> Timmyou quelque chose de fou comme ça ...
iconoclaste
-2

Vous pouvez émettre des commandes arbitraires et intercepter la sortie du shell le plus interne dans une variable

export output=`echo some_cmd | ssh user@host |  echo some_cmd2 | ssh user2@host2`
Thomas Wadley
la source
1
C'est très intéressant, mais je ne sais pas comment cela se rapporte à la question. Peux-tu expliquer?
iconoclaste du