Jak wyjść z połączenia SSH?
Dwie drogi:
- zamknięcie sesji powłoki, np. z
exit
następującą po niej Enter, lub Ctrl- dzwykle pozwala ssh
normalnie wyjść z sesji,
- w przypadku, gdy masz złe połączenie i powłoka nie odpowiada, naciśnij Enterklawisz, a następnie wpisz
~.
i ssh powinien natychmiast zamknąć i wrócić do wiersza polecenia.
Pierwsza opcja powinna być intuicyjna, ale skąd znamy tę drugą?
Możemy nauczyć się tych informacji po uważnym przeczytaniu strony podręcznika.
$ man ssh
daje nam dokumentację SSH , która zawiera następującą sekcję dotyczącą znaków specjalnych:
ESCAPE CHARACTERS
When a pseudo-terminal has been requested, ssh supports a number of
functions through the use of an escape character.
A single tilde character can be sent as ~~ or by following the tilde by
a character other than those described below. The escape character
must always follow a newline to be interpreted as special. The escape
character can be changed in configuration files using the EscapeChar
configuration directive or on the command line by the -e option.
The supported escapes (assuming the default ‘~’) are:
~. Disconnect.
~^Z Background ssh.
~# List forwarded connections.
~& Background ssh at logout when waiting for forwarded connection
/ X11 sessions to terminate.
~? Display a list of escape characters.
~B Send a BREAK to the remote system (only useful if the peer sup‐
ports it).
~C Open command line. Currently this allows the addition of port
forwardings using the -L, -R and -D options (see above). It
also allows the cancellation of existing port-forwardings with
-KL[bind_address:]port for local, -KR[bind_address:]port for
remote and -KD[bind_address:]port for dynamic port-forwardings.
!command allows the user to execute a local command if the
PermitLocalCommand option is enabled in ssh_config(5). Basic
help is available, using the -h option.
~R Request rekeying of the connection (only useful if the peer
supports it).
~V Decrease the verbosity (LogLevel) when errors are being written
to stderr.
~v Increase the verbosity (LogLevel) when errors are being written
to stderr.
Krótka odpowiedź: typ
exit
Jeśli to nie zadziała, jednak ...
SSH Escape Character and Disconnect Sequence
Większość implementacji SSH implementuje znak ucieczki dla sesji interaktywnych, podobnie jak
Ctrl-]
kombinacja telnet . Domyślny znak zmiany znaczenia SSH to~
, wprowadzony na początku wiersza.Jeśli chcesz zakończyć interaktywną sesję OpenSSH, która jest zablokowana i nie można jej zakończyć przez wprowadzenie
exit
lub CtrlDumieszczenie w powłoce po drugiej stronie , możesz wprowadzić~
kropkę.
. Aby wprowadzić znak zmiany znaczenia na początku linii wprowadzania, najpierw naciśnij klawisz Enter. Tak więc następująca sekwencja w większości przypadków zakończy sesję SSH:Enter~.
Inne sekwencje ucieczki
Na przykład OpenSSH oferuje inne sekwencje specjalne
~.
. Wejście~?
podczas sesji powinno dać ci listę. Kilka przykładów:~
obserwowaneCtrl-Z
zawiesza sesję,~&
umieszcza go bezpośrednio w tle,~#
daje listę przekierowanych połączeń w tej sesji.~~
.Znak zmiany znaczenia można zmienić za pomocą opcji wiersza polecenia
-e
. Jeśli ustawisz wartość specjalną, funkcja-e none
Escape jest wyłączona, a sesja jest w pełni transparentna.Zobacz także stronę podręcznika OpenBSD na ssh (do której odwołuje się www.openssh.org ) w
-e
opcji wiersza poleceńźródło
exit
lubCtrl-D
tylko proces nasłuchiwania. Wyraźnie stwierdziłam, że moje rozwiązanie nadaje się na sesję, która utknęła i nie można z niej wyjść . Próbowałem to wyjaśnić bardziej, mam nadzieję, że teraz łatwiej to zobaczyć.~.
bez spacji było dokładnie to, czego potrzebowałem, dzięki! :)Czy chcesz wyjść z powłoki SSH?
Możesz pisać
exit
i naciskać Enterlub używać Ctrl+Dźródło
Po prostu wpisz
exit
lublogout
(następnie wciśnij Enter oczywiście) oba będą działać.źródło
Są to obsługiwane postacie, które zapewniają różne opcje, z którymi możesz bawić się za pomocą ssh.
Obsługiwane sekwencje specjalne:
(Pamiętaj, że sekwencje specjalne są rozpoznawane tylko natychmiast po nowej linii.) Możesz zamknąć listę sekwencji Escape, naciskając Enter.
źródło
Możesz pisać
logout
w linii konsoli (i Enteroczywiście hit ).źródło
MacOS : gdy ssh zawiesza się, użyj następującej sekwencji:
gdzie: shift + ` produkuje ~ (znak tyldy)
źródło