Czy istnieje sposób na wycofanie się ze wszystkich połączeń SSH i zamknięcie PuTTY za pomocą „jednego strzału”? Pracuję w systemie Windows 7 i używam PuTTY do SSH na różnych hostach Linux.
Przykład sposobu, w jaki pracuję:
SSH to host1 with PuTTY...
banjer@host1:~> #...doin some work...ooh! need to go check something on host8...
banjer@host1:~> ssh host8
banjer@host8:~> #...doin some work...OK time for lunch. lets close putty...
banjer@host8:~> exit
banjer@host1:~> exit
Putty closes.
Jak wyżej, jakikolwiek sposób na przejście z host8 do zamknięcia PuTTY za jednym razem? Czasami znajduję się w głębokości do 5 lub 10 hostów. Zdaję sobie sprawę, że mogę kliknąć X, aby zamknąć okno PuTTY, ale chcę się upewnić, że moje połączenia SSH są poprawnie zamykane za pomocą polecenia exit. Zdaję sobie również sprawę, że proszę o wskazówki, jak zwiększyć lenistwo. Po prostu skreślę to jako „jak mogę być bardziej wydajny”.
ctrl+d
wielokrotne naciskanie ?Odpowiedzi:
Spróbuj użyć
ssh
sekwencji ucieczki zakończenia połączenia.W
ssh
sesji wpisz~.
(kropka tyldy). Po wpisaniu nie zobaczysz znaków, ale sesja zostanie natychmiast zakończona.Od
man 1 ssh
źródło
~.
w aliasie lub funkcji? Aby nadać mu łatwą do zapamiętania nazwę jakexitall
. Teraz proszę o zdecydowanie za dużo :). Próbowałem kilka rzeczy,~/.bashrc
ale rozumiem-bash: ~.: command not found
. Przypuszczam, że bash widzi to jako ciąg znaków, a nie sekwencję ucieczki pochodzącą bezpośrednio z klawiatury.ctrl+d
rozwiązanie, ale to odpowiada bardziej bezpośrednio na moje pytanie. Dziękuje wszystkim.~.
, jest obsługiwanyssh
sam.ssh
Klient CLI potrzebuje tej techniki, ponieważ jest to CLI. PuTTY to aplikacja GUI i istnieje wiele bardziej przyjaznych dla użytkownika sposobów robienia tego w GUI.Po prostu naciśnij, CtrlDa wyloguje cię tam, przytrzymując klawisz Ctrl, i naciśnij „d”, aż okno zniknie.
źródło
EOT
. I nawetbash
zignoruje to w środku wiersza poleceń. Wypróbuj sam: wpisz jedną literę i spróbujCtrl-D
.logout
.Po prostu zamknij PuTTY. ( Alt+ F4domyślnie IIRC.)
źródło
Innym sposobem jest, aby
function
dlassh
:Niestety, po zakończeniu pracy w systemie zdalnym zawsze zamknie połączenie i wyloguje się z konsoli.
Pamiętaj, że musisz wykonać taką funkcję na wszystkich swoich serwerach, w przeciwnym razie ten hack nie zadziała. Btw zawsze możesz umieścić funkcję w ~ / .bashrc lub ~ / .whthing_shell_you_use_rc.
Wygląda na nieco brudny hack w porównaniu ze sposobem Uthera.
źródło
function
nie jest POSIX - po prostu usuń słowo kluczowe i musisz$@
poprawnie cytować , w przeciwnym razie argumenty zostaną przekazane po podziale słów (złe).Lub możesz użyć
exec
do zastąpienia procesu powłokissh
podczas przeskakiwania na inny host:Głębokość 5 poziomów nie jest ładna, ponieważ ruch będzie przechodził przez wszystkie pozostałe serwery. Z tego powodu nie polecam po prostu zabijania PuTTY lub ssh (~.), Ponieważ (w zależności od tego, co robisz) może to spowodować osierocone procesy na serwerach.
Lepiej spróbować być mniej „leniwym”. Kliknij prawym przyciskiem myszy pasek tytułu putty, aby szybko otworzyć nową sesję. Jeśli masz „domyślny” serwer i akceptujesz 1 skok z niego, funkcja „Duplicate Session” jest bardzo przydatna. Zwłaszcza podczas korzystania z uwierzytelniania klucza publicznego.
źródło
Jeśli nie masz nic przeciwko zrobieniu małego skryptu, możesz to zrobić.
Skrypt: myssh.sh
Zadzwoń za pomocą polecenia kropki:
Jeśli chcesz wyjść z jednego poziomu:
Jeśli chcesz wyjść ze wszystkich:
źródło
Wpisanie wylogowania w oknie terminalu robi to dla mnie:
Zamyka połączenie ssh i zamyka aplikację Putty.
źródło
ssh host1
, a potemhost1
robi zssh host8
. W tym momencie alogout
zrobiłby to samo, coexit
polecenie, które już zna - wyjdźhost8
i włóż je z powrotemhost1
.