Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

sk1:ssh_screen_tmux

Poniższe materiały są formą quickstart guide - skrótowego tutoriala / instrukcji jak korzystać z narzędzi. Zachęcam do przejrzenia bogatszych w treści i wyjaśnienia źródeł.

SSH

ssh użytkownik@cel

Najpopularniejszym serwerem i klientem ssh w tej chwili jest OpenSSH. Na urządzeniach z ograniczonymi zasobami sprzętowymi spotykany jest też dropbear.
Popularnym klientem ssh dla Windows jest też PuTTY.
Od Windows 10 i Windows Serwer 2019 w skład systemu wchodzi OpenSSH.

know_hosts

Każdy serwer SSH posiada własną parę kluczy asymetrycznych.

Klient łącząc się do serwera sprawdza czy klucze publiczne serwera zgadzają się z kluczami zapamiętanymi w plikach /etc/ssh/ssh_known_hosts i ~/.ssh/known_hosts.
Jeśli nie ma klucza powiązanego z hostem, użytkownik jest pytany czy klucz którym przedstawia się serwer jest w porządku a następnie dodaje klucz do pliku ~/.ssh/known_hosts.
Jeśli klucza się nie zgadza, ssh wyświetla komunikat ostrzegawczy i przerywa pracę.

SSH i klucze użytkownika

Klient ssh może uwierzytelniać się przy pomocy kluczy asymetrycznych.

Taka forma uwierzytelniania jest powszechna do tego stopnia, że częściej spotyka się konfiguracje które dopuszczają logowanie tylko po kluczy niż te które dopuszczają logowanie tylko po haśle.
Używanie kluczy ssh jest też typowym uwierzytelnianiem przy korzystaniu z git+ssh (np. jest to preferowana metoda dla github.com).

Do generowania kluczy dla ssh (pary kluczy asymetrycznych - prywatnego i publicznego) można użyć komendy:
ssh-keygen -t typ -b rozmiar
Przykładowo:
ssh-keygen -t ecdsa -b 521
ssh-keygen -t rsa -b 4096
Klucz może nie mieć hasła, co pozwala na logowanie się bez podawania hasła (a tym samym umożliwia użycie ssh w skryptach wsadowych).

Klucz prywatny musi być odpowiednio chroniony!

Aby móc po kluczu zalogować się na zdalny komputer cel:

  • na cel klucz publiczny musi zostać dopisany do pliku ~/.ssh/authorized_keys
  • klient przedstawić się z użyciem klucza, tzn. klucz musi:
    • być w lokalizacji ~/.ssh/id_ecdsa, ~/.ssh/id_rsa lub ~/.ssh/id_dsa,
    • lub być podany w parametrze -i / --identity, np.:
      ssh -i moj_klucz użytkownik@cel

Do automatycznego kopiowania kluczy służy komenda ssh-copy-id użytkownik@cel

X11 forwarding

SSH pozwala też uruchamiać programy graficzne. Do tego potrzebuje przekazania parametru -Y (lub -X, różnice w man ssh).

Dla testów wykonaj:

  • ssh -Y infxxx@polluks.cs.put.poznan.pl
  • xterm &

ProxyJump

Jeśli do jakiegoś komputera nie można dostać się bezpośrednio (jak np. do lab-net-1), to można użyć opcji ProxyJump do połączenia się przez inny serwer. Przykłady:

  • ssh -J infxxx@polluks.cs.put.poznan.pl root@lab-net-1    (działa od OpenSSH 7.3)
  • ssh -o ProxyJump=infxxx@polluks.cs.put.poznan.pl root@lab-net-1

Spowoduje to:

  1. połączenie do infxxx@polluks.cs.put.poznan.pl
    (i wyświetlenie pytania o hasło, jeśli jest wymagane)
  2. połączenie do root@lab-net-1 z serwera polluks
    (i wyświetlenie pytania o hasło, jeśli jest wymagane)

Spróbuj połączyć X11 forwarding i ProxyJump:

  1. ssh -Y -J infxxx@polluks.cs.put.poznan.pl root@lab-net-1
  2. wireshark

Konfiguracja - plik ~/.ssh/config

Plik konfiguracyjny OpenSSH znajduje się w:

  • ~/.ssh/config (dla Linuksa)
  • %UserProfile%\.ssh\config (dla Windowsa)

Przykładowa zawartość:

Host polluks
   HostName polluks.cs.put.poznan.pl
   User infxxx
   IdentityFile ~/.ssh/moja-dziwna-nazwa-klucza

Host lab-net-1
   HostName lab-net-1
   User root
   ProxyJump polluks

Host github.com
   HostName github.com
   IdentityFile ~/.ssh/id_ecdsa
   User git

Taka zawartość pozwala wykonując ssh polluks łączyć się jako użytkownik infxxx z użyciem klucza ~/.ssh/moja-dziwna-nazwa-klucza na adres polluks.cs.put.poznan.pl,
a wykonując ssh -Y lab-net-1 łączyć się z lab-net-1 za pośrednictwem polluksa.

Port forwarding

Przełącznik -L portPoStronieKlienta:cel:docelowyPort dodany do komendy ssh pozwala łącząc się na adres tego komputera, na port portPoStronieKlienta, wykonać połączenie do cel na port docelowyPort ze zdalnego hosta.

Dla testów wykonaj:

W drugą stronę działa przełącznik -R - pozwala przez połączenie ze strony hosta podany port połączyć się od klienta na podany adres i port.

SOCKS proxy

GNU screen

Program ''screen'' jest standardowym narzędziem do pracy na zdalnych serwerach.
Screen pozwala:

  1. uruchomić i przełączać się między powłokami (np. bash),
  2. odłączyć się z programu i np. wylogować się z maszyny,
  3. podłączyć się z powrotem do otwartych powłok.

Zalety dla pracy zdalnej (zwykle przez SSH):

  1. jeśli połączenie SSH zostanie przerwane, stan powłoki nie jest tracony,
  2. można uruchomić zdalnie długotrwałe zadanie, wyłączyć swój komputer, a później wrócić do konsoli w której wykonywało się zadanie,
  3. można łatwo uruchomić wiele powłok.

Wiele dystrybucji Linuksa włącza screen w zestaw podstawowych pakietów.

~/.screenrc

Przykładowa sensowna startowa konfiguracja (do umieszczenia w ~/.screenrc)

".screenrc"
hardstatus alwayslastline
hardstatus string '%{= kG}%-Lw%{= kW}%50> %n*%f %t%{= kG}%+Lw%< %{= kG}%-=%m/%d/%y | %C:%s %A | %1`%{-}'
startup_message off
vbell off
defscrollback 5000
screen -t 0
screen -t 1
screen -t 2
select 0

Skróty klawiszowe

Skróty klawiszowe (polecenia) w programie GNU screen to kolejno:

  1. naciśnięcie Ctrl + a,
  2. naciśnięcie odpowiedniego klawisza.

Przykładowo: do stworzenia nowego okna należy nacisnąć Ctrl, nacisnąć a, puścić a, puścić Ctrl, nacisnąć c, puścić c.

W zapisie skrótów klawiszowych zwykle stosuje się uproszczone notacje , np. zamiast Ctrl + klawisz stosuje się notację C-klawisz (lub ^klawisz), np. Ctrl + a zapisuje się jako C-a (lub ^a).
Naciśnięcie konkretnego klawisza i zwolnienie go, np. napierw C-a potem c zapisuje się ze spacją, tzn. C-a c.
Zapis M-klawisz, choć formalnie oznacza Meta + klawisz, zwykle jest oznacza Alt + klawisz.
https://en.wikipedia.org/wiki/Keyboard_shortcut#Notation

Żeby przekazać do aplikacji wewnątrz terminalna skrót klawiszowy Ctrl + a należy wykonać C-a a

Pomoc to skrót klawiszowy C-a ?

Start / odłączanie / dołączanie

Uruchomienie programu screen to po prostu komenda screen.

Odłączenie się od programu screen to kombinacja klawiszy C-a d (d od detach).

Ponowne podłączenie to wykonanie np. komendy screen -rx.

"Okna"

Tworzenie nowego okna: C-a c (create)
Przejście do nastepnego okna: C-a n (next)
Przejście do poprzedniego okna: C-a p (previous)
Przejście do okna nr 5: C-a 5
Zmiana nazwy okna: C-a A

Przewijanie wyników

Aby przewijać historię tego okna, należy wejść do trybu kopiowania skrótem C-a [

Przewijanie klawiszami strzałek, PageUp i PageDown.

Wyjście z trybu kopiowania to dowolny niedozwolony znak, np. Esc, C-c.

W trybie kopiowania można (jak nazwa wskazuje) skopiować tekst:

  1. umieść kursor (strzałki lub hjkl) na pierwszym znaku
  2. naciśnij spację (lub enter)
  3. umieść kursor na ostatnim znaku
  4. naciśnij enter

Do wklejania tekstu służy C-a ]

Split

(Da się, ale lepiej użyć tmuxa.)

Podziel poziomo: C-A S
Podziel pionowo: C-A |
Przeskocz do następnego okna: C-A Tab
Zamknij podział: C-A Q

Losowe linki

tmux

''tmux'', podobnie jak screen, pozwala uruchomić wiele powłok, odłączać się od nich i ponownie się przyłączać.
tmux jest bardziej rozbudowany niż screen, jedną z jego "wizytówek" jest dzielenie ekranu na wiele obszarów.

Domyślnie przy skrótach zamiast Ctrl + a używa Ctrl + b.

Podstawy

Uruchomienie: tmux
Odłączenie: C-b d
Ponowne podłączenie: tmux attach

Pomoc: C-b ?

Zarządzanie oknami jak w programie screen (C-b c tworzy, C-b p, C-b n C-b [0-9] przechodzi do innych).

Przewijanie wyników jak w screen: C-b [ wchodzi w tryb kopiowania.

Tryb kopiowania w tmux domyślnie używa skrótów z emacsa. Komendą tmux set-window-option -g mode-keys vi lub wpisem set-window-option -g mode-keys vi w ~/.tmux.conf przestawia się go w tryb działający podobnie jak dla programu screen.

Dzielenie ekranu

tmux pozwala podzielić każde okno na tafle (ang. panes).

Dzielenie pionowe: C-b %
Dzielenie poziome: C-b "

Nawigacja po taflach: C-b + strzałki
Zmiana rozmiaru tafli: C-b + C-strzałki

Maksymalizowanie/przywracanie tafli (zoom): C-b z

Integracja z myszą

Po wydaniu komendy tmux set mouse on (wewnątrz tmuxa) lub wpisaniu do pliku ~/.tmux.conf linii set-option -g mouse on program tmux integruje się z myszą.

Oznacza to, że można :

  1. przełączać między oknami klikając na nazwie okna,
  2. wybierać taflę klikając na niej,
  3. zmieniać rozmiar tafli chwytając linię między taflami,
  4. przewijać historię rolką,
  5. kopiować tekst zaznaczając go myszą (wkleja się standardowo przez C-b ]),
  6. wywoływać menu kontekstowe tmuxa trzymając prawy przycisk.

Uwaga: zaznaczony tekst nie trafia do schowka systemowego.
Wciśnięcie Shift przy zaznaczaniu tekstu / klikaniu myszą wyłącza obsługę myszy przez tmuxa (tzn. można tekst normalnie skopiować do schowka systemowego).

Losowe linki

sk1/ssh_screen_tmux.txt · ostatnio zmienione: 2020/12/06 10:58 przez jkonczak