Często ssh do szkoły w domu ze szkoły, ale zwykle, gdy zmieniam lekcje i komputer zawiesza się, rura jest zepsuta. Jednak ssh po prostu się zamyka - Ctrl+ c, Ctrl+ zi Ctrl+ dnie działają.
To denerwujące, że muszę ponownie uruchomić terminal, a jeszcze bardziej denerwujące, że muszę zamknąć i ponownie utworzyć nowe okno ekranu.
Więc moje pytanie, czy istnieje prosty sposób, aby ssh umarł poprawnie (tj. Kiedy rura ulegnie awarii „normalnie”, wyjdzie z komunikatem o uszkodzonej rurze)? Czy też muszę dowiedzieć się, czym jest PID i ręcznie go zabić?
screen -x
: POdpowiedzi:
Normalne klucze są przekazywane podczas
ssh
sesji, więc żaden z nich nie będzie działał. Zamiast tego użyj sekwencji ucieczki. Aby zabić bieżąca sesja hit następnie Enter ↵, ~, ..Więcej tych sekwencje mogą zostać dodane Enter ↵, ~, ?:
Możesz zamknąć listę sekwencji Escape, naciskając enter.
Zauważ, że ponieważ uderzenie ~~powoduje
ssh
wysłanie~
zamiast przechwytywania, możesz adresować N zagnieżdżonychssh
połączeń, naciskając ~ N razy. (Dotyczy to tylko ~s, które bezpośrednio następują po enter.) To znaczy, że sesja enter~~~~~.kończyssh
głębokość 5 warstw i zachowuje pozostałe 4 nienaruszone.źródło
~
znajduje się martwy klawisz , sekwencja klawiszy toEnter
~
Space
.
.EscapeChar ~
w/etc/ssh/ssh_config
(lub~/.ssh/ssh_config
jeśli wolisz).Enter
~
~
.
Ponieważ~
~
wysyła literał~
poprzez twoją sesję SSH, druga sesja SSH otrzyma go jako pojedynczą tyldę i zinterpretuje.
jako część ucieczki. Aby wysłać do 5. zagnieżdżonej sesji ssh, po prostu użyj 5 tyld w sekwencji ucieczki.Możesz także ustawić utrzymanie aktywności na poziomie aplikacji dla SSH, aby zapobiec zawieszaniu się go w przypadku problemów z połączeniem. Mój
~/.ssh/config
zawiera to:To powoduje, że klient ssh wysyła informacje o poziomie aplikacji co 15 sekund. Ilekroć trzy z nich ulegają awarii (ustawienie domyślne
ServerAliveCountMax
), klient uznaje połączenie za zawieszone i zamyka je.W przeciwieństwie do drugiej opcji
TCPKeepAlive
, jest to sprawdzane w zaszyfrowanym kanale i nie jest sfałszowane.Należy zauważyć, że te podtrzymania życia pomagają również, utrzymywać długo działające połączenia na biegu jałowym , tj. Zapobiegają zawieszeniu do połowy zamkniętych sesji Tcp przez wiele godzin.
Zdecydowanie polecam włączenie tej funkcji, jeśli regularnie się na nią natrafisz, ale powinieneś również wiedzieć o niewielkim ryzyku bezpieczeństwa, które może to powodować. Atak ze znanym tekstem jawnym może stać się łatwiejsze, jeśli atakujący zna przedział i zawartość bezczynności połączenia. Może to być powód, dla którego nie jest domyślnie włączony.
źródło
%)
ServerAliveInterval
1, aby natychmiastowe połączenie zostało wykryte?Host
linii. Ponadto „Nowoczesne szyfry, takie jak Advanced Encryption Standard, nie są obecnie podatne na ataki ze znanym tekstem jawnym”. (z dodanego linku) ...Jak zauważono w odpowiedzi geekozaura, sekwencja ucieczki
~.
zakończy połączenie.Pełna lista sekwencji specjalnych i ich działań można wyświetlić, wpisując
~?
:źródło