Jak włączyć konsolę szeregową w Linuxie i używać jej w praktyce

ByTomasz Sanecki

Jak włączyć konsolę szeregową w Linuxie i używać jej w praktyce

Uruchomienie interfejsu szeregowego jest podstawą i jednym z pierwszych kroków w prawie każdym projekcie embedded.

Jest to najprostsza metoda na komunikację ze sprzętem - możemy użyć normalnej konsoli systemowej, zobaczyć logi z bootowania, porozumieć się z bootloaderem itp.

Bez tego będzie nam bardzo ciężko zrobić ciekawsze rzeczy jak np.

Dlaczego konsola szeregowa bywa niezbędna

Przez konsolę szeregową można uzyskać dostęp do maski startowej i bootmanagera Petiboot na serwerze 2U OpenPOWER single CPU RP2112.

Dostęp za pośrednictwem podłączonego monitora lub konsoli interfejsu modułu zdalnego dostępu IPMI nie jest możliwy, gdyż obecnie w jądrze Linuksa nie są zawarte sterowniki chipu graficznego ASPEED AST2400 dla architektury POWER.

Aby określić właściwe połączenie z konsolą zostaje wykorzystany dmesg na „ringbufforze” jądra.

Interesuje nas /dev/ttyUSB0 - to jest tzw. device node, czyli w uproszczeniu plik, który jest abstrakcyjnym ucieleśnieniem UARTa w linuxie.

Jak wiadomo, wszystko w Linuxie jest plikiem - nie inaczej będzie w tym przypadku.

Podstawy interfejsu szeregowego

UART, konsola szeregowa, RS-232 albo połączenie po serialu - różne nazwy, nie wszystkie do końca poprawne ale mówiące o tym samym.

Interfejs jest asynchroniczny - nadawca (Tx) i odbiorca (Rx) muszą z tego powodu z góry ustalić parametry transmisji np.

Interfejs jest dość wolny, jego szybkość określa się w tzw. “baud rate” - popularnymi wartościami są 9600 i 115200.

Istnieją bardziej zaawansowane wersje interfejsu szeregowego np. RS-485, bardziej odporne na zakłócenia i bardziej skomplikowane w implementacji.

Sprzęt i oprogramowanie potrzebne do połączenia

Aby utworzyć połączenie z konsolą szeregową za pośrednictwem kabla null modem korzystamy w tym przykładzie z aplikacji PuTTY.

PuTTY jest dostępny w wersji dla systemu Windows jak i Linux.

Najpierw należy zainstalować PuTTY.

Za pomocą PuTTY może zostać utworzone połączenie z serwerem OpenPOWER.

W Linuksie za pośrednictwem programu minicom może zostać również uzyskany bezpośredni dostęp do konsoli serwera OpenPOWER.

Jako alternatywa dla połączenia szeregowego przez kabel null modem z ipmitool, może również zostać utworzone połączenie z BMC za pośrednictwem Serial Over LAN (SOL).

Minicom jest małym konsolowym poleceniem używanym do połączeń szeregowych.

W bardziej pragmatycznej definicji minicom może być używany do łączenia modemów, routerów i przełączania portów konsoli za pośrednictwem portu szeregowego.

Zazwyczaj używa się minicom do łączenia z fizycznym portem, gdzie łączy się z urządzeniem szeregowym, takim jak przełącznik, router, PBX itp.

Jeżeli serwer/komputer nie jest wyposażony w złącze szeregowe można użyć konwertera USB.

Konwerter USB-UART np.

Adapter do karty SD: np.

Karta SD np.

Oprogramowanie - na Linuxie picocom, minicom lub screen, na Windowsie Putty.

UWAGA - należy zwrócić szczególną uwagę na połączenie naprzemienne pinów RX i TX.

Pinout Raspberry Pi z oficjalnej dokumentacji - link.

Włączanie konsoli szeregowej na Raspberry Pi

Jak korzystać z konsoli szeregowej dostępnej dla Raspberry Pi?

Wielokrotnie korzystałem z interfejsu UART na Raspberry Pi 2, 3 i 4 (na 5 jeszcze nie było okazji).

Opisane tutaj metody powinny działać tak samo na platformach Raspberry Pi 2, 3, Zero, 4, 5.

Żeby nie komplikować, użyję domyślnego oprogramowania na malinę, czyli Raspbiana.

System jest odczytywany przez Raspberry poprzez kartę pamięci, więc zanim zaczniemy musimy wgrać na nią odpowiedni system (Raspbian Bookworm 64bit).

Uwaga: należy zwrócić szczególną uwagę żeby enable_uart=1 znajdował się w sekcji [all].

Jeżeli umieścilibyśmy go np.

Baud rate interfejsu ustawia kernel opierając się na informacjach zawartych w pliku cmdline.txt.

Ten plik zawiera listę argumentów (command line arguments), która jest przekazywana do jądra.

Po podłączeniu konwertera otwieramy menedżer urządzeń w panelu sterowania.

W zakładce Ports powinna pokazać się pozycja “USB to UART Bridge”.

W nawiasie będzie informacja pod który port COM zostało podpięte nasze urządzenie.

Włączenie i konfiguracja UART w Linuxie

W Linuksie za pośrednictwem programu minicom może zostać również uzyskany bezpośredni dostęp do konsoli serwera OpenPOWER.

Do połączenia się oprócz nazwy device node potrzebujemy również prędkości (baud rate).

Żeby otworzyć połączenie z raspberry.

Powodów może być kilka, ale najważniejszym jest bezpieczeństwo.

Kernel jest między innymi odpowiedzialny za zarządzanie sprzętem.

Jeśli podłączymy nowe urządzenie np. do portu USB, taka informacja zostanie odnotowana przez kernel, który załaduje odpowiedni sterownik i pozwoli nam komunikować się z modułem.

Interesuje nas /dev/ttyUSB0 - to jest tzw. device node, czyli w uproszczeniu plik, który jest abstrakcyjnym ucieleśnieniem UARTa w linuxie.

Baud rate interfejsu ustawia kernel opierając się na informacjach zawartych w pliku cmdline.txt.

Ten plik zawiera listę argumentów (command line arguments), która jest przekazywana do jądra.

GNU Screen jako alternatywa i narzędzie do pracy z konsolą

Dlaczego GNU Screen pozostaje aktualny we współczesnej administracji LinuxGNU Screen vs. tmux: Wybór odpowiedniego multiplekseraInstalacja GNU ScreenUruchamianie sesji ScreenPodstawowa sesjaNazwana sesja (zalecane)Uruchamianie sesji i natychmiastowe wykonanie poleceniaUruchamianie sesji w trybie odłączonymPrefiks poleceń: Zrozumienie Ctrl+AOdłączanie i ponowne podłączanie sesjiOdłączanie od działającej sesjiWyświetlanie wszystkich sesjiPonowne podłączanie do konkretnej sesjiWymuszone podłączenie do już podłączonej sesjiWielokrotne podłączanie: Dwóch użytkowników w tej samej sesjiZarządzanie oknami w sesjiTworzenie nowego oknaNawigacja między oknamiZmiana nazwy oknaZamykanie oknaPodział ekranu na regionyPodział poziomy (góra/dół)Podział pionowy (lewo/prawo)Przechodzenie między regionamiPrzypisywanie okna do regionuUsuwanie regionuKopiowanie i wklejanie (tryb przewijania)Blokowanie sesji ScreenWysyłanie poleceń do sesji bez podłączaniaKonfigurowanie Screen za pomocą .screenrcZalecana produkcyjna konfiguracja .screenrcPraktyczne przypadki użycia w środowisku produkcyjnymBezpieczne uruchamianie migracji bazy danychJednoczesne monitorowanie wielu plików logówZautomatyzowany skrypt wdrożeniowy ze ScreenDostęp do konsoli szeregowejTypowe pułapki i jak ich unikaćSzybki przewodnik: Podstawowe polecenia ScreenKontekst wdrożenia: Screen w zarządzanych środowiskach hostingowychMacierz decyzyjna: Kiedy używać ScreenTechniczna lista kontrolna kluczowych wnioskówFAQGNU Screen to multiplekser terminalowy, który pozwala tworzyć, zarządzać i utrwalać wiele sesji powłoki w jednym oknie terminala.

Po odłączeniu się od sesji Screen, każdy uruchomiony w niej proces kontynuuje działanie - przeżywając rozłączenia SSH, przerwy w sieci i zamknięcia terminala - i pozostaje w pełni dostępny w momencie ponownego połączenia.

Dla każdego, kto zarządza zdalnymi serwerami przez SSH, ta jedna funkcja eliminuje całą klasę ryzyka operacyjnego: zerwane połączenie nie zabija już uruchomionej migracji bazy danych, wielogodzinnego zadania kompilacji ani procesu monitorowania logów na żywo.

Dlaczego GNU Screen pozostaje aktualny we współczesnej administracji Linux

Narzędzia takie jak tmux zyskały popularność, ale Screen jest dostarczany jako domyślny lub niemal domyślny pakiet praktycznie w każdej korporacyjnej dystrybucji Linux i minimalnym obrazie serwera.

Gdy łączysz się przez SSH z maszyną bare-metal lub świeżo uruchomionym instancją VPS Hosting, Screen jest prawie zawsze dostępny bez żadnej dodatkowej instalacji.

Jego niskie zużycie pamięci i zgodność z POSIX czynią go pragmatycznym wyborem w środowiskach o ograniczonych zasobach lub z restrykcjami.

GNU Screen vs. tmux: Wybór odpowiedniego multipleksera

Funkcja GNU Screen tmux
Domyślna dostępność Preinstalowany w większości dystrybucji Wymaga jawnej instalacji
Plik konfiguracyjny ~/.screenrc ~/.tmux.conf
Podział paneli (poziomy/pionowy) Ograniczony (tylko pionowy przez regiony) Pełny, elastyczny podział paneli
Współdzielenie sesji Natywne wielokrotne podłączanie Natywne wielokrotne podłączanie
Skryptowanie / automatyzacja Wstrzykiwanie poleceń screen -X tmux send-keys, rozbudowane API
Zużycie pamięci Bardzo niskie Niskie
Obsługa urządzeń szeregowych Tak (screen /dev/ttyS0) Nie
Personalizacja paska stanu Umiarkowana (hardstatus) Bardzo elastyczna
Tryb kopiowania Styl vi Styl vi lub emacs
Ekosystem wtyczek Brak Aktywny (TPM)
Idealny przypadek użycia Minimalne serwery, konsole szeregowe, starsze środowiska Stacje robocze deweloperów, złożone układy

Praktyczne wskazówki: Na bezgłowym Serwerze Dedykowanym obsługującym długoterminowe zadania w tle, prostota i powszechna dostępność Screen czynią go wyborem o mniejszym tarciu.

Dla dewelopera potrzebującego podzielonych paneli i rozbudowanego paska stanu, wygrywa tmux.

Instalacja GNU Screen

Screen jest preinstalowany w większości dystrybucji.

Sprawdź za pomocą:

“`bashscreen -version“`

Jeśli go nie ma, zainstaluj go przy użyciu odpowiedniego menedżera pakietów:

  • Debian / Ubuntu:
  • “`bashsudo apt-get update && sudo apt-get install screen“`
  • CentOS / RHEL 7:
  • “`bashsudo yum install screen“`
  • CentOS Stream / RHEL 8+ / AlmaLinux / Rocky Linux:
  • “`bashsudo dnf install screen“`
  • Fedora:
  • “`bashsudo dnf install screen“`
  • Arch Linux:
  • “`bashsudo pacman -S screen“`
  • Alpine Linux (powszechny w kontenerach):
  • “`bashapk add screen“`

Po instalacji nie jest wymagany żaden demon ani usługa.

Screen działa wyłącznie jako proces przestrzeni użytkownika.

Uruchamianie sesji Screen

“`bashscreen“`

Przenosi cię do nowej sesji ze standardową powłoką.

Interfejs jest nie do odróżnienia od normalnego terminala, dopóki nie użyjesz prefiksu poleceń Screen.

“`bashscreen -S session_name“`

Zawsze nadawaj nazwy sesjom w środowisku produkcyjnym.

Nienazwane sesje są identyfikowane wyłącznie przez PID, co sprawia, że ponowne podłączanie jest podatne na błędy, gdy działa wiele sesji.

Wskazówka dotycząca konwencji nazewnictwa: Używaj opisowych nazw odzwierciedlających obciążenie - screen -S db-migration, screen -S log-monitor, screen -S build-php82.

Jest to właściwy wzorzec do uruchamiania zadań w tle z cron lub skryptów wdrożeniowych - proces działa wewnątrz nazwanej, możliwej do odzyskania sesji Screen bez konieczności posiadania interaktywnego terminala.

Prefiks poleceń: Zrozumienie Ctrl+A

Każdy skrót klawiaturowy Screen zaczyna się od sekwencji ucieczki Ctrl+A.

To naciśnięcie klawisza informuje Screen, że następny znak jest poleceniem, a nie wejściem dla uruchomionego programu.

Zrozumienie tego modelu jest niezbędne przed zapamiętaniem poszczególnych skrótów.

Jeśli uruchomisz program wewnątrz Screen, który sam używa Ctrl+A (na przykład niektóre edytory tekstu lub biblioteka readline), możesz wysłać dosłowny Ctrl+A do wewnętrznego programu, naciskając Ctrl+A dwukrotnie (Ctrl+A, Ctrl+A).

Odłączanie i ponowne podłączanie sesji

Odłączanie od działającej sesji

“`Ctrl+A, D“`

Sesja kontynuuje działanie w tle.

Wracasz do powłoki nadrzędnej.

Żaden proces wewnątrz sesji nie jest przerywany.

Wyświetlanie wszystkich sesji

“`bashscreen -ls“`

Przykładowe wyjście:

“`There are screens on:14231.db-migration (Detached)14089.log-monitor (Attached)13901.build-php82 (Detached)3 Sockets in /var/run/screen/S-deploy.“`

Status Attached oznacza, że inny terminal jest aktualnie podłączony do tej sesji.

Detached oznacza, że sesja działa, ale żaden terminal nie jest podłączony.

Ponowne podłączanie do konkretnej sesji

“`bashscreen -r db-migration“`

Lub przez PID:

“`bashscreen -r 14231“`

Wymuszone podłączenie do już podłączonej sesji

Jeśli sesja pokazuje Attached, ale musisz ją przejąć (na przykład po tym, jak nieaktywne połączenie SSH pozostawiło ją zablokowaną):

“`bashscreen -d -r log-monitor“`

Flaga -d wymusza odłączenie drugiego połączenia przed ponownym podłączeniem ciebie.

Jest to kluczowa technika odzyskiwania, gdy poprzednia sesja SSH zakończyła się bez czystego odłączenia.

Wielokrotne podłączanie: Dwóch użytkowników w tej samej sesji

“`bashscreen -x session_name“`

Oba terminale widzą identyczne wyjście w czasie rzeczywistym.

Jest to nieocenione przy wspólnym debugowaniu lub prowadzonych przez serwer prezentacjach z kolegą - obie strony obserwują i mogą wchodzić w interakcję z tą samą powłoką.

Zarządzanie oknami w sesji

Jedna sesja Screen może zawierać nieograniczoną liczbę okien.

Każde okno jest niezależną powłoką (lub procesem).

Tworzenie nowego okna

“`Ctrl+A, C“`

Nawigacja między oknami

Skrót Akcja
Ctrl+A, N Następne okno
Ctrl+A, P Poprzednie okno
Ctrl+A, 0-9 Przejdź bezpośrednio do okna według numeru
Ctrl+A, " Interaktywna lista wszystkich okien
Ctrl+A, ' Monit o wprowadzenie numeru lub nazwy okna

Zmiana nazwy okna

“`Ctrl+A, A“`

Wpisz nową nazwę i naciśnij Enter.

Znaczące nazwy okien są wyświetlane na pasku hardstatus, co znacznie przyspiesza nawigację w sesjach z wieloma oknami.

Zamykanie okna

Wpisz exit lub naciśnij Ctrl+D w powłoce okna.

Gdy ostatnie okno w sesji zostanie zamknięte, sesja kończy się.

Podział ekranu na regiony

Screen obsługuje podział terminala na wiele widocznych regionów, z których każdy wyświetla jednocześnie inne okno.

Podział poziomy (góra/dół)

“`Ctrl+A, S“`

Podział pionowy (lewo/prawo)

“`Ctrl+A, |“`

Uwaga: Podział pionowy wymaga Screen 4.1.0 lub nowszego.

Przechodzenie między regionami

“`Ctrl+A, Tab“`

Przypisywanie okna do regionu

Po przeniesieniu fokusu do regionu, użyj Ctrl+A, ", aby wybrać okno do wyświetlenia w tym miejscu.

Usuwanie regionu

“`Ctrl+A, X (remove current region)Ctrl+A, Q (remove all regions except current)“`

Ważne rozróżnienie: Usunięcie regionu nie zamyka działającego w nim okna.

Okno nadal działa; po prostu przestajesz wyświetlać je w tym podziale.

Kopiowanie i wklejanie (tryb przewijania)

Screen utrzymuje bufor przewijania dla każdego okna.

Aby uzyskać do niego dostęp:

“`Ctrl+A, [“`

Powoduje to wejście w tryb kopiowania.

Nawigacja używa klawiszy w stylu vi:

  • h, j, k, l - przesuwanie kursora
  • Ctrl+F / Ctrl+B - strona do przodu / do tyłu
  • / - szukaj do przodu
  • ? - szukaj do tyłu
  • Space - zaznacz początek zaznaczenia
  • Space (ponownie) - zaznacz koniec i skopiuj do bufora

Aby wkleić skopiowany tekst:

“`Ctrl+A, ]“`

Domyślny bufor przewijania wynosi 100 linii.

Do monitorowania logów serwera zwiększ go znacznie w .screenrc (opisane poniżej).

Blokowanie sesji Screen

“`Ctrl+A, X“`

Sesja blokuje się natychmiast i przed udzieleniem dostępu prosi o podanie hasła użytkownika Unix.

Używaj tego, gdy odchodzisz od terminala podłączonego do wrażliwego serwera - jest to szybsze niż zamykanie połączenia SSH i ponowne podłączanie.

Wysyłanie poleceń do sesji bez podłączania

Flaga -X pozwala wstrzykiwać polecenia Screen do działającej sesji z zewnątrz:

“`bashscreen -S db-migration -X stuff "tail -f /var/log/mysql/error.logn"“`

Polecenie stuff wysyła naciśnięcia klawiszy do aktywnego okna nazwanej sesji.

n symuluje naciśnięcie Enter.

Technika ta jest używana w skryptach automatyzacji wdrożeń do interakcji z długo działającymi sesjami Screen bez konieczności ręcznego podłączania.

Konfigurowanie Screen za pomocą .screenrc

Plik ~/.screenrc jest odczytywany przy uruchomieniu i kontroluje domyślne zachowanie Screen.

Dobrze skonstruowany .screenrc przekształca Screen z podstawowego multipleksera w naprawdę ergonomiczne środowisko.

Utwórz lub edytuj go:

“`bashnano ~/.screenrc“`

Zalecana produkcyjna konfiguracja .screenrc

“`bashDisable the startup messagestartup_message offSet scrollback buffer to 10,000 lines (critical for log monitoring)defscrollback 10000Enable UTF-8defutf8 onSet default shellshell -$SHELLVisual bell instead of audiblevbell onHardstatus bar: shows hostname, window list, and current timehardstatus onhardstatus alwayslastlinehardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'Bind F2 to create a new windowbindkey -k k2 screenChange escape key to Ctrl+B (useful if Ctrl+A conflicts with other tools)escape ^BbAuto-detach on hangup signal (critical for SSH session drops)autodetach onDisable flow control (prevents Ctrl+S from freezing the terminal)defflow off“`

Dyrektywa autodetach on jest niezbędna przy użyciu SSH.

Bez niej, jeśli połączenie SSH zostanie nieoczekiwanie zerwane (zamiast naciśnięcia Ctrl+A, D), Screen może zakończyć sesję zamiast ją odłączyć.

Dzięki autodetach on, sygnał SIGHUP (wysyłany przy rozłączeniu SSH) wyzwala czyste odłączenie zamiast zakończenia sesji.

defflow off zapobiega częstej frustracji przypadkowego naciśnięcia Ctrl+S i pozornego zamrożenia terminala.

Wielu administratorów traci minuty na rozwiązywanie problemu „zamrożonego” terminala, który po prostu jest w pauzie sterowania przepływem XON/XOFF.

Praktyczne przypadki użycia w środowisku produkcyjnym

Bezpieczne uruchamianie migracji bazy danych

“`bashscreen -S db-migrateInside the session:php artisan migrate -force 2>&1 | tee /var/log/migration-$(date +%F).logDetach: Ctrl+A, DReattach later to check progress:screen -r db-migrate“`

Jeśli połączenie SSH zostanie zerwane w trakcie migracji, proces kontynuuje działanie.

Podłączasz się ponownie i zastajesz go albo nadal działającego, albo zakończonego z pełnym wyjściem zachowanym w logu i buforze przewijania.

Jednoczesne monitorowanie wielu plików logów

“`bashscreen -S monitoringWindow 0: nginx access logtail -f /var/log/nginx/access.logCtrl+A, C - new windowWindow 1: application error logtail -f /var/log/app/error.logCtrl+A, C - new windowWindow 2: system messagesjournalctl -f“`

Nawiguj między oknami za pomocą Ctrl+A, ", aby zobaczyć, który log generuje aktywność.

Zautomatyzowany skrypt wdrożeniowy ze Screen

“`bash#!/bin/bashscreen -dmS deploy bash -c 'git pull origin main &&composer install -no-dev &&php artisan config:cache &&systemctl reload php8.2-fpm &&echo "Deployment complete at $(date)" >> /var/log/deploy.log'echo "Deployment started in background screen session 'deploy'"echo "Monitor with: screen -r deploy"“`

Ten wzorzec jest szczególnie przydatny na VPS z cPanel, gdzie możesz zarządzać wieloma wdrożeniami aplikacji z jednej powłoki administracyjnej.

Dostęp do konsoli szeregowej

“`bashscreen /dev/ttyS0 115200“`

Screen pełni podwójną rolę emulatora terminala szeregowego.

Jest to standardowa technika dostępu do konsoli fizycznego serwera, przełącznika sieciowego lub urządzenia wbudowanego przez połączenie szeregowe - bez konieczności używania minicom lub picocom.

Typowe pułapki i jak ich unikać

Zagnieżdżone sesje Screen: Jeśli łączysz się przez SSH z sesji Screen na Maszynie A do Maszyny B i uruchamiasz tam Screen, masz teraz dwie warstwy obsługi Ctrl+A.

Wewnętrzna sesja Screen przechwytuje Ctrl+A zanim zewnętrzna go zobaczy.

Aby wysłać Ctrl+A do zewnętrznej sesji, naciśnij Ctrl+A, Ctrl+A.

Aby uniknąć zamieszania, zmień klawisz ucieczki wewnętrznej sesji w jej .screenrc używając escape ^Bb.

Martwe sesje nieoczyszczające się: Jeśli Screen ulegnie awarii lub host uruchomi się ponownie w sposób nieczysty, pliki gniazd mogą pozostać w /var/run/screen/ lub ~/.screen/, pokazując sesje jako Dead.

Wyczyść je za pomocą:

“`bashscreen -wipe“`

Sesja należąca do roota vs. użytkownika: Sesja Screen uruchomiona jako root nie może być ponownie podłączona przez użytkownika niebędącego rootem i odwrotnie.

Minicom, PuTTY i inne narzędzia do portów szeregowych

Do COM-ow uzywasz minicoma i podobnych, agetty, mgetty ... zalezy od celu.

Wbrew pozorom warto jest umiec poslugiwac sie portem szeregowym.

Nie jest to trudne ale niestety na tyle skomplikowane, że za każdym razem wymagało dłuższego grzebania po forach, github issues i rozsianych dokumentach.

Putty tez ma mozliwosc laczenia sie po portach szeregowych (w konfiguracji).

A może by Panowie ruszyc z innej strony.

Niestety brak mi doswiadczenia z instalacja na Ubuntu sterow (i nie tyko z tym ) .

Probowalem sudo apt-get install [pliki sterow].

Jednak wywala ze niektore paczki maja bledy i NIE WIEM czy w koncu stery poinstalował.

Konsola szeregowa w środowiskach VPS i wirtualizacji

Rozpocznij pracę z VPS Linux.

VPS Linux obsługuje się przede wszystkim za pomocą konsoli.

Z Panelu Klienta możesz przejść do konsoli web.

Najprostszym sposobem nadania dostępu zewnętrznej konsoli SSH do usługi VPS Linux jest wskazanie klucza publicznego podczas instalacji systemu.

Najpierw należy wygenerować klucze publiczny i prywatny.

Następnie skonfiguruj logowanie za ich pomocą podczas instalacji systemu w Panelu Klienta.

Po zakończeniu instalacji możesz zalogować się bezpośrednio do usługi z wykorzystaniem konsoli SSH.

Wymagany będzie do tego klucz prywatny, a sposób jego użycia będzie różnić się w zależności od tego, z jakiego narzędzia korzystasz.

Jeżeli logowanie za pomocą klucza nie zostało skonfigurowane podczas instalacji systemu, nadal można to zrobić.

Wymaga to jednak tymczasowego włączenia logowania hasłem, by uzyskać dostęp do VPS.

Po uzyskaniu dostępu i dodaniu klucza publicznego, wyłącz logowanie hasłem, przywracając poprzednie ustawienia konfiguracyjne.

Jeśli korzystasz z VPS Linux z Plesk Panel, nie musisz włączać logowania hasłem, by skonfigurować logowanie za pomocą klucza.

Zlokalizuj plik konfiguracyjny sshd_config (jego lokalizacja to /etc/ssh).

Aby zmiany weszły w życie, należy odświeżyć konfigurację.

Jeśli wszystko zostało wykonane poprawnie, możesz teraz zalogować się do VPS Linux przy wykorzystaniu zewnętrznej konsoli SSH (np. PuTTY).

Azure i konsola szeregowa w systemach Linux

W tym artykule opisano, jak używać konsoli szeregowej Azure do uzyskiwania dostępu do interfejsu w trybie tekstowym dla maszyn wirtualnych z systemem Linux oraz instancji w zestawie skalowania maszyn wirtualnych.

Konsola szeregowa łączy się z portem szeregowym ttys0 maszyny wirtualnej lub instancji zestawu skalowania maszyn wirtualnych, zapewniając niezależny dostęp od stanu sieci lub systemu operacyjnego.

Konsola szeregowa działa identycznie w przypadku maszyn wirtualnych i instancji zestawu skalowania maszyn wirtualnych.

Konto użytkownika korzystające z uwierzytelniania haseł musi istnieć na maszynie wirtualnej.

Możesz utworzyć użytkownika opartego na hasłach z funkcją resetowania hasła rozszerzenia dostępu do maszyny wirtualnej.

Wdrożenia klasyczne nie są obsługiwane.

Aby konsola szeregowa działała prawidłowo, system operacyjny gościa musi być skonfigurowany do odczytywania i zapisywania komunikatów konsoli do portu szeregowego.

Większość dystrybucji Endorsed Azure Linux ma domyślnie skonfigurowaną konsolę szeregową.

Jeśli nie widzisz niczego w konsoli szeregowej, upewnij się, że na maszynie wirtualnej włączono diagnostykę rozruchu.

Jeśli tworzysz niestandardowy obraz maszyny wirtualnej z systemem Linux, należy włączyć dostęp do konsoli w pliku /etc/inittab, aby uruchomić terminal na ttyS0.

Na przykład: S0:12345:respawn:/sbin/agetty -L 115200 console vt102.

Może być również konieczne uruchomić getty na ttyS0.

Należy również dodać ttys0 jako miejsce docelowe dla danych wyjściowych szeregowych.

Jeśli tworzysz niestandardowe jądro, rozważ włączenie tych flag jądra: CONFIG_SERIAL_8250=y i CONFIG_MAGIC_SYSRQ_SERIAL=y.

Naciśnij Enter, aby kontynuować i użyć edytora tekstów, aby naprawić plik FSTAB.

Aby to zrobić, może być konieczne użycie trybu pojedynczego użytkownika.

Jeśli skonfigurowano iptables do blokowania łączności SSH, możesz użyć konsoli szeregowej do interakcji z maszyną wirtualną bez konieczności użycia SSH.

Podobnie, jeśli zapora blokuje dostęp SSH, możesz uzyskać dostęp do maszyny wirtualnej za pośrednictwem konsoli szeregowej i ponownie skonfigurować zaporę.

Uzyskaj dostęp do konsoli szeregowej i zmień ustawienia.

Konsola szeregowa może być używana niezależnie od konfiguracji SSH maszyny wirtualnej, ponieważ nie wymaga połączenia sieciowego z maszyną wirtualną.

Uruchom ponownie maszynę wirtualną z poziomu bloku konsoli szeregowej, aby uzyskać dostęp do programu GRUB na maszynie wirtualnej z systemem Linux.

Domyślnie wszystkie subskrypcje mają włączony dostęp do konsoli szeregowej.

Konsolę szeregową można wyłączyć na poziomie subskrypcji lub na poziomie maszyny wirtualnej albo zestawu skalowania maszyn wirtualnych.

Istnieje znany problem polegający na tym, że konsola szeregowa Azure może się nie udać połączenie, gdy niestandardowe konto magazynu diagnostyki rozruchu ma ograniczenia zapory, podczas korzystania z polecenia az serial-console.

W 2026 r. konsola szeregowa Azure nie będzie już korzystać z kont magazynu diagnostyki rozruchu do nawiązywania połączenia.

W przypadku tej zmiany nie jest wymagana żadna akcja klienta.

Konsola szeregowa używa konta magazynu skonfigurowanego do diagnostyki rozruchu w przepływie pracy połączenia.

Po włączeniu zapory na tym koncie magazynu adresy IP usługi konsoli szeregowej muszą zostać dodane jako wykluczenia.

W poniższej tabeli wymieniono adresy IP, które muszą być dozwolone jako wykluczenia zapory na podstawie regionu lub lokalizacji geograficznej, w której znajduje się maszyna wirtualna.

To jest podzbiór pełnej listy adresów IP konsoli szeregowej używanych w tagu usługi SerialConsole.

Dostęp do kont magazynu diagnostyki rozruchu można ograniczyć za pomocą tagu usługi SerialConsole.

Tag usługi nie jest rozdzielony regionalnie.

Ruch w tagu usługi jest tylko przychodzący, a konsola szeregowa nie generuje ruchu do miejsc docelowych z możliwością kontroli klienta.

Mimo że zapory konta magazynu Azure nie obsługują obecnie tagów usługi, tag usługi SerialConsole może być używany programowo w celu ustalenia listy adresów IP.

Adresy IP, które muszą być dozwolone, są specyficzne dla regionu, w którym znajduje się maszyna wirtualna.

Na przykład maszyna wirtualna wdrożona w regionie Europy Północnej musi dodać następujące wykluczenia IP do zapory konta magazynu dla obszaru geograficznego Europy: 52.146.139.220 i 20.105.209.72.

W bieżącej operacji konsoli szeregowej gniazdo internetowe jest otwierane do punktu końcowego, takiego jak <region>.gateway.serialconsole.azure.com.

Upewnij się, że punkt końcowy serialconsole.azure.com jest dozwolony dla klientów przeglądarki w organizacji.

Po pomyślnym dodaniu adresów IP do zapory konta magazynowego spróbuj ponownie nawiązać połączenie konsoli szeregowej z maszyną wirtualną.

Dostęp do konsoli szeregowej jest ograniczony do użytkowników, którzy mają rolę Współautora maszyny wirtualnej lub wyższą w odniesieniu do maszyny wirtualnej.

Azure Konsola Szeregowa nie przegląda, nie kontroluje ani nie przechowuje żadnych danych przesyłanych do i z portu szeregowego maszyny wirtualnej.

Aby upewnić się, że wszystkie dane w pamięci, przenoszone na dyski za pomocą stronicowania przez maszyny wirtualne działające na konsoli szeregowej Azure są szyfrowane, należy użyć szyfrowania opartego na hoście.

Portal Azure lub Azure CLI pełnią rolę zdalnych terminali do portu szeregowego maszyny wirtualnej.

Ponieważ te terminale nie mogą łączyć się bezpośrednio z serwerami, które hostują maszyny wirtualne przez sieć, używana jest brama pośrednicząca, aby zaproksymować ruch terminalowy.

Azure konsola szeregowa nie przechowuje ani nie przetwarza tych danych klienta.

Cały dostęp do konsoli szeregowej jest obecnie rejestrowany w dziennikach diagnostyki rozruchu maszyny wirtualnej.

Nie są rejestrowane żadne hasła dostępu dla konsoli.

Jeśli jednak polecenia uruchamiane w konsoli zawierają lub wyjściowe hasła, wpisy tajne, nazwy użytkowników lub dowolną inną formę danych osobowych (PII), zostaną one zapisane w dziennikach diagnostyki rozruchu maszyny wirtualnej.

Zostaną one zapisane wraz ze wszystkimi innymi widocznymi tekstami w ramach implementacji funkcji przewijania z powrotem konsoli szeregowej.

Te dzienniki są koliste, a tylko osoby z uprawnieniami do odczytu do konta magazynującego diagnostykę mają do nich dostęp.

Oznacza to, że użytkownik, który jest odłączony, nie zostanie wylogowany.

Możliwość wymuszenia wylogowania po rozłączeniu (przy użyciu funkcji SIGHUP lub podobnego mechanizmu) jest nadal w harmonogramie działania.

W przypadku Windows jest włączony automatyczny limit czasu w specjalnej konsoli administracyjnej (SAC), jednak dla systemu Linux można skonfigurować ustawienie limitu czasu terminalu.

W tym celu dodaj export TMOUT=600 plik .bash_profile lub .profile dla użytkownika, którego używasz do logowania się do konsoli.

Użyj klawisza Tab na klawiaturze, aby przejść do interfejsu konsoli szeregowej z portalu Azure.

Lokalizacja zostanie wyróżniona na ekranie.

Konsola szeregowa ma wbudowaną obsługę czytnika zawartości ekranu.

Zdajemy sobie sprawę z niektórych problemów z konsolą szeregową i systemem operacyjnym maszyny wirtualnej.

Poniżej znajduje się lista tych problemów i kroków mających na celu ograniczenie ryzyka dla maszyn wirtualnych z systemem Linux.

Te kwestie i środki łagodzące dotyczą zarówno maszyn wirtualnych, jak i instancji zestawów skalowania maszyn wirtualnych.

Program GRUB może nie być poprawnie skonfigurowany.

Uruchom następujące polecenia: grub2-mkconfig -o /etc/grub2-efi.cfg i/lub grub2-mkconfig -o /etc/grub2.cfg.

Konsole szeregowe nie obsługują negocjacji dotyczących rozmiaru okna (RFC 1073), co oznacza, że nie będzie sygnału SIGWINCH wysyłanego, aby zaktualizować rozmiar ekranu, a maszyna wirtualna nie będzie znała rozmiaru twojego terminala.

Niestabilne dane wejściowe z klawiatury w obrazach SLES BYOS.

Jest to problem z pakietem Plymouth.

Plymouth nie należy uruchamiać w Azure, ponieważ nie potrzebujesz ekranu powitalnego, a Plymouth zakłóca zdolność platformy do korzystania z konsoli szeregowej.

Usuń Plymouth za pomocą sudo zypper remove plymouth, a następnie uruchom ponownie.

Alternatywnie zmodyfikuj wiersz jądra w konfiguracji GRUB, dodając plymouth.enable=0 na końcu wiersza.

Szybki przewodnik: Podstawowe polecenia Screen

  • screen - uruchom nową sesję
  • screen -S nazwa - uruchom nazwane sesje
  • Ctrl+A, D - odłącz sesję
  • screen -ls - pokaż listę sesji
  • screen -r nazwa - podłącz ponownie
  • Ctrl+A, C - nowe okno
  • Ctrl+A, N - następne okno
  • Ctrl+A, P - poprzednie okno
  • Ctrl+A, [ - tryb kopiowania
  • Ctrl+A, ] - wklejanie z bufora
  • screen /dev/ttyS0 115200 - połączenie z konsolą szeregową

Techniczna lista kontrolna kluczowych wniosków

  • Interfejs szeregowy działa asynchronicznie i wymaga zgodnych parametrów transmisji.
  • RX i TX muszą być połączone naprzemiennie.
  • Baud rate jest kluczowy dla poprawnej komunikacji.
  • W Linuxie konsola szeregowa może być traktowana jak zwykłe urządzenie w /dev.
  • dmesg pomaga ustalić właściwe urządzenie i parametry.
  • screen, minicom i PuTTY to praktyczne narzędzia do pracy z konsolą.
  • W środowiskach bezgłowych konsola szeregowa bywa jedyną drogą dostępu.
  • Wirtualne środowiska wymagają poprawnej konfiguracji portu szeregowego i boot diagnostyki.

Jeżeli wszystko zostało wykonane poprawnie, możesz teraz zalogować się do VPS Linux przy wykorzystaniu zewnętrznej konsoli SSH (np. PuTTY).

Konsola szeregowa ma być używana głównie jako narzędzie do rozwiązywania problemów w sytuacjach, gdy łączność za pośrednictwem protokołu SSH nie jest możliwa.

Konsola szeregowa nie ma tak dużej przepustowości jak protokół SSH.

Dostęp do konsoli szeregowej jest obecnie możliwy tylko przy użyciu nazwy użytkownika i hasła.

kabel null modem do konsoli szeregowej

Interfejs szeregowy UART z mikrokontrolerem STM32 – przesyłanie i odbieranie danych

tags: #konsola #szeregowa #linux #wlaczenie

Popularne posty:

About the author

Tomasz Sanecki administrator

Informatyk z zawodu i zamiłowania. Od 2007r właściciel firmy Perfect Systems. Specjalista do spraw bezpieczeństwa IT, serwisu urządzeń elektronicznych, sieci komputerowych. Prywatnie mąż i ojciec dwójki dzieci. Pasjonat nowoczesnych technologii, motocykli oraz włoskiego espresso.