SSH i SCP czyli bezpieczny telnet i ftp

Program ssh powstał, gdyż telnet jest protokołem nieszyfrowanym, czyli można go podsłuchiwać. Ssh natomiast szyfruje całą transmisje dzięki czemu możemy uzyskać duże bezpieczeństwo. Podobnie jest z ftp, ten protokół też nie jest szyfrowany, dlatego powstała jego alternatywa scp .

W Linuksie istnieją trzy programy klienckie ssh: slogin, scp i ssh. Każdy z nich korzysta z tego samego pliku konfiguracyjnego, zwykle /etc/ssh/ssh_config oraz z podkatalogu .ssh w katalogu domowym (dyrektywy w nim są bardziej wiążące niż te z /etc/ssh/ssh_config). Plik ./ssh/identy zawiera prywatny klucz użytkownika a plik .ssh/identity.pub zawiera publiczny klucz użytkownika. Inne ważne pliki to .ssh/known_hosts i .ssh/authorized_keys.

ssh

Ssh jest odpowiednikiem telnetu albo rlogina. Wydając polecenie ssh uzytkownik@nazwa_hosta możemy połączyć się z danym hostem zaszyfrowanym kanałem. Jeżeli nie używamy autoryzacji przy pomocy kluczy kryptograficznych będziemy musieli podać hasło.

scp

Scp, czyli secure cp, pozwala w bezpieczny sposób kopiować pliki między maszynami. wydając polecenie scp plik_lokalny uzytkownik@adres_maszyny:plik_zdalny albo scp uzytkwonik@adres_maszyny:plik_zdalny plik_lokalny jesteśmy w stanie kopiować pliki z wykorzystaniem szyfrowanego kanału.

generowanie kluczy

Wydając polecenie ssh-keygen (z parametrem -t rsa lub -t dsa określający algorytm kryptograficzny) generujemy klucz kryptograficzny (poniżej przebieg sesji tworzenia klucza).W trakcie tej czynności zostaniemy poproszeni o podanie nazwy klucza (może zostać domyślna) oraz jego hasła (passpharse). Jeżeli chcemy przelogowywać się automatycznie (bez podawania hasła) powinno zostać ono puste.

[ziutus2@duzy ziutus2]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ziutus2/.ssh/id_rsa):
Created directory '/home/ziutus2/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ziutus2/.ssh/id_rsa.
Your public key has been saved in /home/ziutus2/.ssh/id_rsa.pub.
The key fingerprint is:
06:0f:38:bf:bf:b2:96:46:ff:03:08:37:af:2b:3b:7c ziutus2@duzy

Jeżeli chcemy autoryzować się przy pomocy kluczy kryptograficznych należy przegrać ten plik na komputer docelowy i dopisać jego zawartość do pliku

~/.ssh/authorized_keys.

Przy kopiowaniu należy przypilnować aby zgadzał się właściciel pliku na serwerze zdalnym.

Możesz użyć polecenia ssh-copy-id by wygodniej skopiować klucz kryptograficzny.

Logowanie się na zdalną maszynę z wykorzystaniem kluczy kryptograficznych bez hasła

Jeżeli zrobiliśmy wszystko, co jest opisane w punkcie o generowaniu kluczy (czyli podaliśmy puste hasło i przegraliśmy plik z kluczem na serwer docelowy ), możemy wydać polecenie ssh uzytkownik@adres_serwera i bez hasła zalogować się na serwer. Jest to szczególnie przydatne gdy chcemy wykonywać jakieś polecenia na zdalnej maszynie z poziomu skryptów.

Kopiowanie plików z wykorzystaniem kluczy kryptograficznych bez hasła

Jeżeli zrobiliśmy wszystko, co jest opisane w punkcie o generowaniu kluczy (czyli podaliśmy puste hasło), możemy wydając polecenie scp plik_lokalny adres_maszyny:plik_zdalny albo scp adres_maszyny:plik_zdalny plik_lokalny, czyli kopiować pliki z wykorzystaniem szyfrowanego kanału bez podawania hasła. Jest to szalenie przydatne przy wykonywaniu kopii bezpieczeństwa czy automatycznym rozsyłaniu do oddziałów firmy nowego oprogramowania.

ćwiczenie 2

Proszę napisać skrypt który przekopiuje na serwer nauczycielski na państwa konto w katalog główny program SNPLP.zip (lub inny wskazany przez prowadzących) a następnie poinformuje państwa o tym fakcie.

ćwiczenie 3

Proszę napisać skrypt, który pozwala wysyłać maila ze zdalnego konta dostępnego na serwerze wspomagającym (10.9.91.12). Wskazówka: najlepiej użyć pliku który będzie zawierał komendę wysyłającą maila.

Odpowiedzi do ćwiczeń

ćwiczenie 2

zakładając iż program SNPLP.zip znajduje się w katalogu domowym a komputer nauczycielski ma adres 10.9.91.11 skrypt ma postać:

#!
/bin/bash

scp ~/SNPLP.zip 10.9.91.11:~/SNPLP.zip
ssh 10.9.91.11 ‚if [ -e SNPLP.zip]
echo „Masz nową wersje programu w katalogu domowym” |
mail -s „Nowa wersja programu” kursxx@localhost fi’

ćwiczenie 3

Poniższy skrypt umożliwia wysyłanie poczty ze zdalnego konta. Przyjmuje 3 parametry odpowiednio: nazwę lokalnego pliku z pocztą, temat wiadomości, adresat.

#! /bin/sh

# skrypt przyjmuje 3 parametry
# 1 – nazwa pliku z poczta
# 2 – temat wiadomości
# 3 – adresat

echo nazwa pliku z trescia wiadomosci: $1
echo temat wiadomosci: $2
echo Adresat: $3

echo ” cat $1 | mail -s ‚$2’ $3 ” > .poczta

scp $1 10.9.91.12:~/poczta.txt && scp .poczta 10.9.91.12:~/.poczta

ssh 10.9.91.12 ‚
if [ -e ~/.poczta ]
then
chmod 700 .poczta
~/.poczta
rm ~/poczta.txt
rm ~/.poczta

fi’

Dodaj komentarz