Czy mogę połączyć się lub przeglądać porzucone sesje ssh?


14

Mam wirtualną instancję ponownego uruchamiania, którą mogę uruchomić sshz dowolnego hosta w sieci firmowej. Moja sshsesja została przerwana podczas uruchamiania niektórych skryptów, które mogły spowodować rozłączenie się. whoPolecenia lokalnie nadal wymienia spadła połączenia. Ponowne połączenie z sshrozpoczyna zupełnie nową sesję. Czy istnieje sposób na połączenie się z oryginalną sesją? Jeśli nie, mogę to zabić? Mam dostęp root i fizyczny. Nie korzystałem z screena w oryginalnej sesji.

Odpowiedzi:


11

Chcesz użyć screena na pilocie, a następnie, gdy wrócisz ssh, ponownie połącz się z tym wystąpieniem screena.

ale nie, nie możesz ponownie połączyć się z sesją ssh, musisz użyć screena (lub czegoś podobnego, aby to ułatwić).

Spójrz na to pytanie, aby zobaczyć co najmniej jedną inną opcję i pewne różnice między nim (tmux) a ekranem. po przeczytaniu odpowiedzi na to pytanie ... powiedziałbym, że tmux jest lepszy

och i tak, możesz killzatrzymać proces (w tym rozwidlone uderzenie), możesz spróbować skillzabić użytkownika po imieniu, ale podejrzewam, że jeśli ten użytkownik jest rootem ... może spróbować zabić rzeczy, których nie może.

odpowiedź została zaktualizowana kilka razy


4

Domyślnie nie można ponownie połączyć się z opuszczoną sesją ssh. Można jednak skonfigurować procesy w ramach sesji ssh, z którą można się ponownie połączyć po ponownym ustanowieniu nowej sesji ssh.

To, czego chcesz użyć, to screen, a jeszcze lepiej przyjazne dla użytkownika opakowanie wokół ekranu o nazwie byobu.

Screen pozwala na uruchomienie wielu wirtualnych sesji terminalowych w tej samej sesji ssh. Dostępne są samouczki i strony pomocy .

byobu to opakowanie, które pozwala łatwo otwierać nowe ekrany za pomocą prostego klawisza funkcyjnego zamiast kombinacji klawiszy z ctrl-a. Pokazuje także linię statusu ze wszystkimi otwartymi wirtualnymi terminalami, które można nazwać.

Inną ciekawą funkcją jest fakt, że cały ekran może pozostać włączony, gdy połączenie ssh jest rozłączone. Po prostu łączysz się ponownie przez ssh i dzwonisz byobu i wszystko jest jak wcześniej.

Nareszcie zrzuty ekranu Byobu.


3

Jak wspomniano, screen jest prawdopodobnie najlepszym wyborem. Jeśli sesja zostanie upuszczona / będzie kontynuowana. Wpisz „screen -list”, aby zobaczyć dostępne sesje, i „screen -r” z żądaną sesją. Mała wskazówka, możesz uzupełnić tabulatorem ciąg sesji zamiast kopiować / wklejać całość.

Jednak ekran może być denerwujący. W moim kliencie nie można łatwo przewijać w górę, aby zobaczyć historię w konsoli. Działa nieco inaczej niż można by się spodziewać. Jeśli wszystko, co chcesz zrobić, to upewnić się, że długo działające procesy nie zostaną zabite, użyj „nohup”. Zapobiegnie to wyłączeniu twojego proca po utracie połączenia. Upewnij się jednak, że wysyłasz dane wyjściowe proc do pliku, jeśli chcesz go monitorować. Ponadto, jeśli masz skrypt bash, myślę, że musisz jawnie wywołać „bash” przed nohup. Przykład...

nohup bash ./myscript.sh> output.log 2> & 1 &

Oznacza to nohup, aby zapobiec zabiciu proc, bash, aby jawnie wywołać bash, jeśli masz skrypty specyficzne dla basha, twój skrypt o nazwie „myscript.sh” w bieżącym katalogu, output.log jako plik do wysłania zarówno standardowego, jak i błąd do, a na końcu „&”, aby uruchomić proc w tle.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.