Przejdź do treści

SSH i SCP

SSH (Secure Shell) pozwala bezpiecznie zalogować się na zdalny komputer i pracować w jego terminalu. SCP (Secure Copy) korzysta z SSH do kopiowania plików między komputerami.

Polecenia ssh, scp i ssh-keygen są domyślnie dostępne w Linuksie, macOS i Windows (w PowerShell i w WSL).

Logowanie

ssh z1234567@student.tcs.uj.edu.pl
  • z1234567 to login (konto wydziałowe), student.tcs.uj.edu.pl to adres serwera.
  • Przy pierwszym połączeniu SSH pyta, czy ufamy serwerowi - odpowiadamy yes.
  • Po podaniu hasła pracujemy w terminalu serwera. Kończymy poleceniem exit (lub Ctrl+D).

Można też wykonać na serwerze jedno polecenie bez otwierania terminala:

ssh z1234567@student.tcs.uj.edu.pl ls -l

Klucze SSH

Zamiast wpisywać hasło przy każdym logowaniu, można użyć pary kluczy:

  • klucz prywatny - zostaje na naszym komputerze; nie wolno go nikomu udostępniać,
  • klucz publiczny (plik .pub) - kopiujemy na serwer, na który chcemy się logować.

Generowanie kluczy

ssh-keygen -t ed25519
  • Domyślne położenie pliku można zaakceptować (Enter).
  • Można ustawić hasło do klucza (passphrase) - chroni klucz, jeśli ktoś wykradnie plik.

Klucze trafiają do katalogu .ssh w katalogu domowym (~/.ssh, w Windows C:\Users\<nazwa>\.ssh):

  • ~/.ssh/id_ed25519 - klucz prywatny,
  • ~/.ssh/id_ed25519.pub - klucz publiczny.

Kopiowanie klucza publicznego na serwer

Serwer akceptuje klucze wpisane do pliku ~/.ssh/authorized_keys w naszym katalogu domowym na serwerze (jeden klucz w linii).

Linux, macOS, WSL:

ssh-copy-id z1234567@student.tcs.uj.edu.pl

Windows (PowerShell):

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh z1234567@student.tcs.uj.edu.pl "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Od teraz ssh z1234567@student.tcs.uj.edu.pl nie pyta o hasło do konta (ewentualnie pyta o passphrase klucza).

Skrót do serwera

W pliku ~/.ssh/config można zapisać skrót:

Host student
    HostName student.tcs.uj.edu.pl
    User z1234567

Wtedy wystarczy ssh student (działa też z scp).

Kopiowanie plików (SCP)

Składnia: scp ŹRÓDŁO CEL, gdzie plik na serwerze zapisujemy jako login@serwer:ścieżka (ścieżka względna liczy się od katalogu domowego na serwerze).

# z komputera na serwer (do katalogu domowego)
scp plik.pdf z1234567@student.tcs.uj.edu.pl:

# z komputera na serwer, do podkatalogu
scp plik.pdf z1234567@student.tcs.uj.edu.pl:projekty/

# z serwera na komputer (do bieżącego katalogu)
scp z1234567@student.tcs.uj.edu.pl:projekty/wynik.txt .

# cały katalog (-r)
scp -r projekt z1234567@student.tcs.uj.edu.pl:

Materiały