Jak uruchomić Claude Code na telefonie przez SSH
Claude Code działa w sesji tmux na serwerze VPS, a telefon służy jedynie jako terminal. Konfiguracja SSH, mosh oraz odpowiednia aplikacja zapewniają stabilną pracę.
Claude Code z telefonu: jak to działa w praktyce
Claude Code z telefonu nie jest aplikacją mobilną. Claude Code działa na serwerze VPS (virtual private server), wewnątrz sesji tmux, która pozostaje otwarta, a telefon nawiązuje połączenie SSH (secure shell) z tą sesją na czas korzystania z niej. Zamknięcie aplikacji nie przerywa pracy agenta, ponieważ proces nigdy nie był uruchomiony na telefonie.
Ten podział stanowi podstawę projektu. System operacyjny telefonu zawiesza aplikację kilka sekund po przełączeniu się na inną, więc każde długotrwałe zadanie uruchomione na telefonie zostałoby przerwane. Ponadto telefon otrzymuje nowy adres sieciowy przy każdym przejściu z sieci Wi-Fi na dane mobilne. Oba problemy znikają, gdy proces działa na serwerze, a telefon służy jedynie do wyświetlania obrazu.
Na serwerze wymagane są cztery elementy: tmux do utrzymania sesji, klucze SSH do uzyskania dostępu, mosh do obsługi zmian sieciowych oraz sam Claude Code. Po stronie telefonu wystarczy jedna aplikacja terminalowa z dostępnym rzędem klawiszy funkcyjnych.
Wymagania dotyczące VPS
Mała instancja z Ubuntu 24.04 jest wystarczająca do obsługi SSH oraz tmux. Claude Code wymaga jednak większych zasobów. Oficjalne wymagania na lipiec 2026 to Ubuntu 20.04 lub nowsze, procesor x64 lub ARM64 oraz co najmniej 4 GB pamięci RAM. Plan z 1 GB RAM pozwala na instalację, lecz proces zostanie zamknięty przez jądro systemu pod obciążeniem. Claude Code wymaga również płatnego konta Claude (Pro, Max, Team lub Enterprise) albo konta Console z dostępem do API, ponieważ darmowy plan Claude.ai nie obejmuje tej funkcjonalności.
Skonfiguruj serwer dla zwykłego użytkownika z uprawnieniami sudo, nie jako root. Jeśli serwer jest nowy, wykonaj najpierw kroki opisane w pierwsze dziesięć minut na nowym VPS, ponieważ zmiany w SSH opisane w dalszej części poradnika są łatwiejsze do wdrożenia, gdy użytkownik i firewall już istnieją.
sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --versionInstalator umieszcza plik binarny w ~/.local/bin/claude, a claude --version wyświetla linię typu 2.1.211 (Claude Code). Jeśli wyświetli się command not found, oznacza to, że dany katalog nie znajduje się jeszcze w PATH: wyloguj się, zaloguj ponownie, a następnie sprawdź wynik za pomocą command -v claude. claude doctor wyświetla diagnostykę instalacji i ustawień bez uruchamiania sesji.
Zaloguj się teraz jednorazowo z laptopa, zanim zaczniesz polegać na telefonie. Uruchom claude w katalogu projektu i postępuj zgodnie z instrukcjami logowania. Proces wymaga otwarcia adresu URL w przeglądarce i wklejenia kodu do terminala, co przy obsłudze dwóch aplikacji na ekranie telefonu jest mało wydajne. Wykonaj to raz na pełnowymiarowej klawiaturze, a poświadczenia pozostaną na serwerze.
Uruchamianie Claude Code wewnątrz tmux, aby uniknąć przerwania procesu przy zerwaniu połączenia
tmux new -s claude
cd ~/projects/api
claudeOdłącz się za pomocą Ctrl-b, a następnie d. tmux wyświetli [detached (from session claude)] i przywróci dostęp do powłoki. Teraz można zamknąć aplikację, stracić zasięg lub schować telefon. Panel będzie nadal działał.
tmux ls
tmux attach -t claudetmux ls wyświetla jedną linię na sesję, na przykład claude: 1 windows (created Thu Jul 30 09:14:02 2026). tmux attach -t claude przywraca sesję dokładnie w miejscu, w którym została przerwana, włącznie z niedokończoną edycją.
Działa to, ponieważ tmux uruchamia własny proces serwera, a powłoka oraz Claude Code są procesami potomnymi tego serwera, a nie sshd. Gdy połączenie SSH zostaje zakończone, jądro wysyła sygnał SIGHUP do procesów powiązanych z tym połączeniem, a serwer tmux nie znajduje się wśród nich. Bez tmux, ta sama blokada ekranu, która przerywa połączenie, zatrzymuje Claude Code w trakcie wywołania narzędzia. Uruchamianie Claude Code na VPS wewnątrz tmux zawiera bardziej szczegółowe informacje na temat układu sesji.
Uruchamiaj tmux na serwerze, nigdy na telefonie. Wpisanie tmux wewnątrz sesji, do której jesteś już podłączony, wyświetli sessions should be nested with care, unset $TMUX to force, a wymuszenie tego spowoduje konflikt dwóch klawiszy prefiksu.
Automatyczne dołączanie przy każdym logowaniu
Wpisywanie polecenia attach na klawiaturze ekranowej jest uciążliwe. Umieść poniższy kod na końcu pliku ~/.profile na serwerze:
if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [ -t 1 ]; then
exec tmux new-session -A -s claude
finew-session -A -s claude dołącza do sesji o nazwie claude, jeśli istnieje, lub tworzy ją, jeśli nie istnieje, więc jedno polecenie obsługuje oba przypadki. exec zastępuje powłokę logowania przez tmux, dzięki czemu wyjście z tmux zamyka połączenie zamiast pozostawiać użytkownika w surowej powłoce. Gdy wymagana jest zwykła powłoka, należy pominąć ten plik: ssh you@server -t "bash --noprofile".
Umieść ten kod w ~/.profile, a nie w ~/.bashrc. ~/.bashrc uruchamia się również dla sesji nieinteraktywnych, co powoduje błędy przesyłania plików: scp oraz sftp odczytują nieoczekiwane wyjście jako dane protokołu i kończą działanie błędem Received message too long. ~/.profile uruchamia się tylko dla powłok logowania, co odpowiada interaktywnej sesji SSH.
~/.profile to również miejsce, w którym Ubuntu dodaje ~/.local/bin do PATH. Jeśli claude działa poprawnie zaraz po zalogowaniu, ale powłoka wewnątrz tmux zwraca command not found, przyczyną jest kolejność wykonywania skryptów. Dlatego należy uruchamiać tmux z powłoki logowania, jak pokazano powyżej, zamiast ze skryptu pomijającego profil.
iOS: Termius lub Blink Shell
Obie aplikacje obsługują SSH oraz mosh i przechowują klucze wewnątrz aplikacji. Różnica polega na interfejsie.
Blink Shell jest sterowany poleceniami. W wierszu poleceń wpisuje się ssh you@server lub mosh you@server, używając tej samej składni co w terminalu desktopowym. Ustawienia otwiera się wpisując config, a sekcja Keys służy do generowania pary kluczy.
Termius jest sterowany formularzami. Należy wypełnić wpis hosta, a następnie w szczegółach hosta zmienić protokół z SSH na Mosh. Termius posiada własną implementację mosh i wspiera wersję 1.3.0 oraz nowsze, więc na serwerze nadal musi być zainstalowany pakiet mosh.
W obu przypadkach klucz należy wygenerować wewnątrz aplikacji; nigdy nie należy kopiować istniejącego klucza prywatnego na telefon. Aplikacja wyświetla część publiczną klucza, którą należy dodać do pliku ~/.ssh/authorized_keys na serwerze. Klucze SSH dla poszczególnych urządzeń i sposób ich unieważniania opisuje nazewnictwo oraz procedurę unieważniania, co w przypadku telefonu jest ważniejsze niż w przypadku laptopa.
Należy włączyć w aplikacji terminala własną blokadę biometryczną lub kod dostępu. Bez tego odblokowany telefon stanowi otwartą powłokę do serwera przez cały czas, gdy ekran pozostaje aktywny.
Android: Termux
pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pubTermux zawiera pakiety OpenSSH oraz mosh w swoim repozytorium, dzięki czemu ssh, ssh-keygen oraz mosh działają w sposób typowy dla systemów desktopowych. Należy dodać wyświetlony klucz publiczny do pliku ~/.ssh/authorized_keys na serwerze, a następnie nawiązać połączenie za pomocą mosh you@server.
Ekranowa klawiatura systemu Android nie posiada klawiszy Esc oraz Ctrl, które są niezbędne do pracy z Claude Code. Termux umożliwia wyświetlenie własnego paska klawiszy. W tym celu należy dodać poniższą linię do pliku ~/.termux/termux.properties:
extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]Następnie należy wykonać termux-reload-settings, co spowoduje wyświetlenie paska nad klawiaturą. To samo polecenie przeładowania konfiguracji wczytuje czcionkę o stałej szerokości znaków (TrueType), umieszczoną w lokalizacji ~/.termux/font.ttf.
System Android może zatrzymać proces Termux działający w tle, jednak w tym przypadku skutkuje to jedynie koniecznością ponownego połączenia. Sesja oraz agent pozostają aktywne na serwerze.
Dlaczego terminal zawiesza się po wyjściu z zasięgu Wi-Fi i co naprawia mosh?
Połączenie SSH to połączenie TCP (transmission control protocol), które jest identyfikowane przez oba adresy oraz oba porty. Wyjście poza zasięg Wi-Fi powoduje, że telefon otrzymuje nowy adres z sieci komórkowej, przez co stare połączenie przestaje być rozpoznawane przez obie strony. Żaden mechanizm nie informuje o tym fakcie. Terminal po prostu przestaje odpowiadać, dopóki protokół TCP nie przerwie połączenia, po czym ssh wyświetla client_loop: send disconnect: Broken pipe. Aby natychmiast przerwać zawieszoną sesję, należy nacisnąć Enter, następnie ~, a na końcu ..
mosh (mobile shell) eliminuje ten tryb awarii. Narzędzie wykorzystuje SSH jednorazowo do zalogowania się i uruchomienia procesu mosh-server, odczytuje port UDP (user datagram protocol) wybrany przez serwer i zamyka połączenie SSH. Następnie obie strony wymieniają datagramy UDP uwierzytelnione wspólnym kluczem sesji, dzięki czemu sesja jest identyfikowana przez ten klucz, a nie przez adres IP. Zmiana adresu nie przerywa działania. mosh lokalnie wyświetla wpisywane znaki i odświeża ekran, gdy stan serwera jest inny, co zapewnia użyteczność połączenia nawet przy wolnym łączu mobilnym.
mosh korzysta z portów UDP z zakresu od 60000 do 61000, dlatego należy otworzyć ten zakres:
sudo ufw allow 60000:61000/udp
sudo ufw statusOtwieranie portów za pomocą ufw zawiera pozostałe informacje dotyczące zapory sieciowej. Jeśli dostawca oferuje zewnętrzną zaporę sieciową w panelu sterowania, należy dodać ten sam zakres również tam, ponieważ reguła ufw nie wpływa na filtr działający przed maszyną.
Często występują dwa problemy z mosh. Logowanie, które kończy się sukcesem, a następnie zawiesza z komunikatem Nothing received from server on UDP port 60001., oznacza, że zakres UDP jest blokowany gdzieś pomiędzy telefonem a serwerem. Połączenie zgłaszające mosh-server not found oznacza, że pakiet nie jest zainstalowany na serwerze lub nie znajduje się w ścieżce logowania PATH. Należy go zainstalować lub wskazać bezpośrednio za pomocą mosh --server=/usr/bin/mosh-server you@server.
mosh odmawia również uruchomienia, gdy lokalizacja (locale) logowania nie jest ustawiona na UTF-8, o czym informuje komunikatem: mosh-server needs a UTF-8 native locale to run. Lokalizację należy poprawić na serwerze, a nie na telefonie.
locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8Istnieją dwie funkcje, których mosh nie obsługuje. Zgodnie z plikiem README, mosh nie wspiera przekierowania X ani nieinteraktywnych zastosowań SSH, w tym przekierowania portów, dlatego podgląd aplikacji webowej uruchomionej przez Claude Code nadal wymaga użycia standardowego ssh -L 8080:127.0.0.1:8080 you@server. Narzędzie synchronizuje tylko widoczny obszar ekranu, więc nie posiada własnego bufora przewijania. To ograniczenie nie stanowi problemu, ponieważ tmux przechowuje historię: Ctrl-b, a następnie [ uruchamia tryb kopiowania, przewijanie odbywa się za pomocą myszy lub klawiszy strzałek, a q zamyka ten tryb.
Dostosowanie ekranu telefonu do pracy
Cztery linie w ~/.tmux.conf na serwerze wykonują większość pracy:
set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000mouse on zmienia przeciągnięcie dotykowe w przewijanie, a stuknięcie w wybór panelu lub okna, co zastępuje większość niewygodnych do wpisywania klawiszy prefiksu. status-position top przesuwa linię statusu tmux z dolnej krawędzi, gdzie jest ona zasłaniana przez klawiaturę ekranową i pasek sugestii. default-terminal jest istotne, ponieważ w przeciwnym razie tmux zgłasza terminal screen do Claude Code, co pogarsza wyświetlanie kolorów i ramek. Jeśli tmux odmawia uruchomienia z błędem missing or unsuitable terminal: tmux-256color, oznacza to brak wpisu terminfo: sudo apt install ncurses-term.
Wystarczy opanować cztery klawisze, aby praca stała się komfortowa.
Escprzerywa Claude w trakcie odpowiedzi, zachowując wykonaną pracę, dlatego warto mieć ten klawisz najbliżej kciuka.Ctrl+Crównież przerywa działającą operację. W stanie bezczynności pierwsze naciśnięcie czyści dane wejściowe, a drugie zamyka Claude Code, jest to więc bardziej radykalne narzędzie.Escnaciśnięte dwukrotnie czyści szkic zapytania, a przy pustym wierszu otwiera menu przewijania (rewind).- W przypadku zapytań wieloliniowych należy wpisać
\, a następnie nacisnąć Enter. Ta forma działa w każdym terminalu. Shift+Enter jest natywnie obsługiwane tylko przez nieliczne terminale desktopowe, a klienci mobilni do nich nie należą.
Należy unikać dzielenia paneli. Telefon w orientacji pionowej ma około 40 kolumn szerokości, więc podział pionowy pozostawia 20 kolumn na panel, co powoduje, że każdy diff staje się nieczytelny przez zawijanie wierszy. Zamiast tego należy używać okien tmux: Ctrl-b c tworzy nowe okno, a Ctrl-b n przełącza na następne. Jeśli w drugim oknie zostanie uruchomiona kolejna sesja Claude Code, obie sesje mogą bezpośrednio przekazywać sobie pracę, co eliminuje konieczność kopiowania tekstu między oknami na ekranie dotykowym. W razie potrzeby dokładnego odczytania diffa należy obrócić telefon do orientacji poziomej.
Ilość tekstu wyświetlanego na ekranie warto ustawić świadomie, ponieważ styl wyjściowy modyfikuje prompt systemowy dla każdej odpowiedzi, a bardziej zwięzły format oznacza mniej ekranów do przewijania na telefonie.
Długa sesja na małym ekranie to przede wszystkim problem zarządzania kontekstem, dlatego warto zapoznać się z informacjami o tym, jak zarządzać oknem kontekstu Claude Code, zanim podejmie się próbę pracy przez cały dzień, na przykład podczas podróży pociągiem.
Zabezpieczanie dostępu: tylko klucze, bez haseł
Telefon przechowuje teraz klucz do maszyny, która edytuje kod i wykonuje polecenia. Wyłącz uwierzytelnianie hasłem. Plik typu drop-in jest bezpieczniejszy niż bezpośrednia edycja sshd_config, ponieważ sshd_config w systemie Ubuntu zawiera na początku /etc/ssh/sshd_config.d/*.conf, a system przyjmuje pierwszą napotkaną wartość dla danego ustawienia.
sudo tee /etc/ssh/sshd_config.d/99-phone.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
EOF
sudo sshd -t && sudo systemctl reload sshsshd -t analizuje konfigurację i nie wyświetla żadnych komunikatów, jeśli jest ona poprawna. Pomiń ten krok, a literówka spowoduje, że sshd nie uruchomi się ponownie. Pozostaw aktywną bieżącą sesję i przetestuj połączenie z drugiego terminala przed zamknięciem czegokolwiek. Błędny klucz skutkuje komunikatem Permission denied (publickey)., a przy wyłączonych hasłach nie ma możliwości powrotu. W takiej sytuacji jedyną drogą odzyskania dostępu jest konsola dostawcy. Jeśli testowe połączenie nie powiedzie się, połącz się ponownie za pomocą ssh -v i rozwiąż problem, dopóki pierwsza sesja pozostaje otwarta. Ten jeden komunikat o błędzie obejmuje pięć różnych usterek, a szczegółowe wyjście wskaże, która z nich występuje w Twoim przypadku.
Przypisz każdemu urządzeniu osobny klucz. Utrata telefonu oznacza wtedy jedynie usunięcie jednej linii z ~/.ssh/authorized_keys, a laptop nadal będzie działał. Współdzielony klucz wymusza zmianę klucza na każdym posiadanym urządzeniu.
Jeśli przenosisz SSH na inny port w systemie Ubuntu 24.04, pamiętaj, że proces nasłuchujący należy do ssh.socket, więc sama linia Port nic nie zmieni. Uruchom sudo systemctl edit ssh.socket, wyczyść domyślne ustawienie za pomocą pustej linii ListenStream=, a następnie ustaw port w kolejnej linii. Hardening SSH on a VPS omawia ten temat oraz pozostałe aspekty bezpieczeństwa.
fail2ban for SSH zapewnia niewielki wzrost bezpieczeństwa po wyłączeniu haseł, ponieważ odgadnięte hasło i tak nie może zostać zaakceptowane. Narzędzie to pozwala jednak zachować porządek w logach, co ułatwia identyfikację rzeczywistych prób logowania.
Skuteczniejszą opcją jest ukrycie SSH przed publicznym Internetem. Umieść serwer za samodzielnie hostowaną siecią WireGuard VPN, uruchamiaj tunel na telefonie w razie potrzeby i skonfiguruj sshd tak, aby nasłuchiwał na ListenAddress tylko wewnątrz tunelu. mosh działa przez tunel, ponieważ obie strony wykorzystują protokół UDP. Uwaga: tunel zwiększa narzut pakietów, więc jeśli duże transfery zwalniają, zmniejsz wartość MTU (maximum transmission unit) w konfiguracji WireGuard na telefonie.
Ostatnia uwaga dotycząca pracy w ten sposób. Z poziomu telefonu zatwierdzasz prośby o uprawnienia na ekranie, który wyświetla tylko kilka linii zmian (diff) jednocześnie. Jest to powód, aby zachować zabezpieczenia, a nie je wyłączać. Sprawdź również, w jakim trybie uprawnień uruchamiane są sesje, ponieważ tryb auto stanie się domyślnym dla Claude Code od 14 sierpnia 2026 i będzie on wprowadzał zmiany w plikach bez pytania o zgodę. Running Claude Code safely on a VPS opisuje ograniczenia użytkownika i katalogów, które warto ustawić, zanim głównym sposobem dostępu stanie się ekran dotykowy.
Gdy ponowne podłączenie kończy się niepowodzeniem
Jeśli po ponownym podłączeniu do sesji wystąpi błąd, należy najpierw sprawdzić stan procesu oraz dostępność zasobów. Często przyczyną jest nieprawidłowe zamknięcie poprzedniej instancji lub zablokowanie pliku gniazda (socket).
- Sprawdź, czy proces nadal działa w tle za pomocą
ps aux | grep nazwa_procesu. - Zweryfikuj uprawnienia do plików tymczasowych w katalogu
/tmplub w ścieżce zdefiniowanej dla gniazda. - Jeśli używasz narzędzi takich jak
tmuxlubscreen, spróbuj wymusić odłączenie innych sesji za pomocą flagi-dlub-r. - Przejrzyj logi systemowe pod kątem błędów segmentacji lub problemów z dostępem do pamięci współdzielonej.
W przypadku problemów z sesją sieciową, upewnij się, że port nie jest zajęty przez inną usługę, która uruchomiła się w międzyczasie. Użyj ss -tulpn | grep port, aby zidentyfikować konflikt.
tmux attach printing no server running on /tmp/tmux-1000/default oznacza, że serwer tmux przestał działać, co niemal zawsze wskazuje na restart maszyny. Należy to sprawdzić za pomocą uptime. Aktualizacje jądra pochodzące z automatycznych aktualizacji bezpieczeństwa powodują restart serwera, a po restarcie sesje tmux nie są utrzymywane. Każde uruchomienie Claude Code należy zatem traktować jako proces, który można wznowić.
can't find session: claude jest inna. Serwer tmux działa, ale wskazana nazwa nie istnieje. tmux ls wyświetla dostępne sesje.
Jeśli po podłączeniu widoczny jest zwykły znak zachęty powłoki w miejscu, gdzie wcześniej znajdowało się Claude Code, oznacza to, że proces zakończył się bez zamknięcia sesji. Należy sprawdzić dmesg -T | tail pod kątem linii takiej jak Out of memory: Killed process 4821 (claude), która pojawia się w środowiskach niespełniających wymogu 4 GB pamięci RAM podczas wykonywania dużej edycji. Brak takiej linii oznacza, że Claude Code zakończyło działanie samodzielnie, a przyczyna znajduje się w historii przewijania powłoki powyżej znaku zachęty.
Okno, które po przywróceniu jest pomniejszone i otoczone niewykorzystaną przestrzenią, oznacza, że do sesji podłączonych jest dwóch klientów o różnych rozmiarach. tmux dostosowuje rozmiar okna do najmniejszego z podłączonych klientów. Laptop utrzymuje sesję o szerokości 200 kolumn, podczas gdy telefon żąda 40. Należy odłączyć pozostałych klientów w momencie łączenia się: tmux attach -d -t claude.
FAQ
Czy mogę uruchomić Claude Code bezpośrednio na telefonie zamiast na VPS?
Nie. Wspierane platformy na lipiec 2026 to macOS, Windows, Ubuntu 20.04 lub nowsze, Debian 10 lub nowsze oraz Alpine 3.19 lub nowsze, przy wymaganych minimum 4 GB pamięci RAM. Android oraz iOS nie znajdują się na tej liście. Telefon ponadto usypia aplikacje i stale zmienia adres sieciowy, co uniemożliwia długotrwałe działanie agenta. Należy uruchomić go na serwerze, a telefon wykorzystać jedynie jako wyświetlacz.
Czy sesja zostanie utrzymana po zamknięciu aplikacji lub utracie zasięgu?
Tak, za to działanie odpowiadają dwa oddzielne komponenty. tmux utrzymuje proces na serwerze, dzięki czemu nic nie zostaje przerwane po zakończeniu połączenia. mosh utrzymuje samo połączenie podczas zmiany adresu, więc przełączenie z Wi-Fi na dane mobilne nie wymaga ponownego logowania. W przypadku zwykłego SSH bez tmux, zerwanie połączenia wysyła sygnał SIGHUP, co powoduje zatrzymanie Claude Code w trakcie zadania.
Dlaczego mosh łączy się, ale nic nie wyświetla?
Logowanie, które kończy się sukcesem, a następnie zawiesza z Nothing received from server on UDP port 60001., oznacza, że porty UDP od 60000 do 61000 nie są otwarte. Należy dodać ten zakres w ufw, a także w zaporze sieciowej dostawcy, która w większości paneli zarządzania stanowi osobne ustawienie. Jeśli mosh zgłasza, że mosh-server nie został znaleziony, na serwerze brakuje pakietu: sudo apt install mosh.
Jak przerwać działanie Claude Code z klawiatury bez klawisza Esc?
Należy dodać pasek klawiszy funkcyjnych. Termux konfiguruje go za pomocą extra-keys w ~/.termux/termux.properties, natomiast Termius i Blink posiadają pasek, który można edytować w ustawieniach. Esc przerywa trwającą odpowiedź, zachowując wykonaną już pracę. Ctrl+C również przerywa działanie, ale dwukrotne naciśnięcie go w stanie bezczynności powoduje wyjście z Claude Code, dlatego w pierwszej kolejności należy używać Esc.
Czy wystawienie SSH na świat jest wystarczająco bezpieczne?
Przy wyłączonym uwierzytelnianiu hasłem, jedynym skutecznym poświadczeniem jest klucz, który nigdy nie opuszcza urządzeń, co stanowi akceptowalne ryzyko w przypadku maszyny, którą można odtworzyć. Każdemu urządzeniu należy przypisać osobny klucz, dzięki czemu utrata telefonu wiąże się jedynie z usunięciem jednej linii w authorized_keys. Jeśli nie chcesz wystawiać portu na publiczny dostęp, umieść serwer za WireGuard i skonfiguruj sshd tak, aby nasłuchiwał na adresie tunelu.