Як можна відправляти команди на "внутрішній" сеанс ssh?


32

Зобразіть сценарій, коли я ввійшов на сервер (який ми будемо називати "Уоллес") з моєї локальної машини, а звідти я sshперейшов на інший сервер (який будемо називати "Громіт"):

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

Тоді ssh сесія від Уоллеса до Громіта висить, і я хочу її вбити. Якщо я вступлю, ~.щоб вбити ssh, це вбиває сеанс ssh з мого ноутбука до Уоллеса, тому що ~перехоплений цим сеансом ssh, а the .приймається за команду вбити сеанс. Як мені надіслати команду на ssh-сеанс між Уоллес та Громітом? Як я вбиваю свій "внутрішній" ssh?


FYI: Для деяких розкладок клавіатури може знадобитися двічі натиснути клавішу "~", щоб надрукувати один символ "~". Я часто використовую екран, тому коли втрачається ssh-з'єднання, я можу просто запустити іншу оболонку, що знищує цей сеанс.
математика

Відповіді:


42

Додайте ще один тильд (тобто тип ~~.). Кожен наступний тильд з'їдається самим зовнішнім сеансом ssh, який ще не з'їв його, але якщо наступний символ - ще один тильд, він передається до наступного сеансу в.

Якщо з gromit 1 ви перейшли до третього хоста (назвемо це wensleydale), тоді ~~~.ви скинете сеанс на wensleydale і поверне вас до запиту на gromit.

1 І який великий сервер, який є; як часто я чую зауваження розробника "тріщить хост, громіт"?



1
О, це дивовижно; Я не можу повірити, що раніше не стикався з цим.
MadHatter підтримує Моніку

Було б чудово, якби якимось способом отримати візуальний відгук про те, як далеко ви знаходитесь у стеку, на випадок, якщо у вас є laptop --> Wallace --> Gromit --> Shaun --> Timmyщось чи божевільне подібне ...
iconoclast

-2

Ви можете видавати довільні команди та виводити вихід із самої внутрішньої оболонки в змінну

export output=`echo some_cmd | ssh user@host |  echo some_cmd2 | ssh user2@host2`

1
Це дуже цікаво, але я не впевнений, як це стосується питання. Ви можете пояснити?
іконоборство
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.