Praca z ssh

Na zdalny serwer ssh logujemy się używając nazwy użytkownika i hasła. W konsoli wydajemy polecenie, a następnie podajemy hasło.

ssh uzytkownik@serwer
Aby logować się bez hasła musimy uwierzytelnić się za pomocą kluczy publicznego i prywatnego. Klucz wygenerujemy poleceniem
ssh-keygen -t rsa -C "[email protected]"
Po zapytaniu o hasło możemy wpisać hasło do klucza (jest to dodatkowe zabezpiecznie) lub nic nie wpisywać i wcisnąć Enter (zostanie utworzony klucz bezhasłowy). Po wykonaniu tego polecenia, wygenerowane zostały dwa klucze. Klucz prywatny i klucz publiczny. Pierwszy został zapisany w pliku /home/user/.ssh/id_rsa i nie powinniśmy go udostępniać nikomu. Drugi zaś w pliku /home/user/.ssh/id_rsa.pub. Aby logować się teraz na zdalny serwer przy użyciu klucza musimy dodać wpis o naszym kluczu publicznym do pliku authorized_keys znajdującego się w katalogu ~/.ssh na serwerze zdalnym.
ssh-copy-id -i .ssh/id_rsa.pub uzytkownik@serwer
Można to zrobić również tak
scp ~/.ssh/id_rsa.pub uzytkownik@zdalny_host:~uzytkownik/.ssh/authorized_keys
lub tak
cat .ssh/id_rsa.pub | ssh uzytkownik@zdalny_host 'cat >> .ssh/authorized_keys'
Procedura w Windows opiera się na programach Putty i Puttygen. Opiszę ją w skrócie. Odsyłam do zapoznania się z pełnym opisem. Pobieramy i uruchamiamy program Putty. W zakładce Session tworzymy nową sesję ssh: wpisujemy hosta, port, wybieramy protokół ssh. W pole tekstowe poniżej Saved Sessions wpisujemy pod jaką nazwą chcemy przechowywać sesję i klikamy Save. Tak zapisaną sesję będzie można potem odtworzyć przyciskiem Load. Zanim zapiszemy sesję możemy również w zakładce Data ustalić Auto-login username, aby nie musieć przy każdym połączeniu wpisywać nazwy użytkownika. Połączenie otwieramy przyciskiem Open. Teraz możemy się logować użytkownikiem i hasłem. Jeśli chcemy używać klucza musimy go najpierw wygenerować. Służy do tego program Puttygen. Kiedy klucz zostanie wygenerowany możemy dodać do niego komentarz (zwykle nasz email) oraz hasło do klucza. Następnie klikamy Save public key i zapisujemy go w bezpiecznej lokalizacji na naszym komputerze. Podobnie zapisujemy klucz prywatny, pozostawiamy jego rozszerzenie ppk. Teraz trzeba umieścić klucz publiczny w pliku /.ssh/authorized_keys na serwerze. Logujemy się na zdalny serwer użytkownikiem i hasłem. Wykonujemy polecenia
mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Teraz ponownie uruchamiamy putty, wybieramy naszą sesję i na zakładce SSH > Auth za pomocą Browse wybieramy z dysku nasz klucz prywatny. Przechodzimy na zakładkę Session i zapisujemy sesję ponownie (Save). Możemy się już logować za pomocą klucza. Klikamy Open oraz podajemy hasło dla klucza (jeśli je utworzyliśmy).

Inne ciekawostki

Ustawienia serwera, aby nie używał logowania użytkownikiem i hasłem, a jedynie poprzez klucz publiczny. Należy wyedytować plik /etc/ssh/sshd_config i ustawić w nim
Protocol 2
PasswordAuthentication no
UsePAM no
Następnie zrestartować serwer.
/etc/init.d/ssh restart

SSHFS

Dzięki sshfs możemy montować zdalne systemy plików nie posiadając uprawnień roota oraz korzystać z nich prawie tak samo jak gdyby był to katalog lokalny. Poniższym poleceniem sprawdzamy czy mamy moduł fuse
modprobe -l
Jeżeli go nie ma to instalujemy np. tak na Fedorze
yum install fuse
Gdy mamy już zainstalowany ładujemy go poleceniem
modprobe fuse
Kolejnym krokiem jest instalacja sshfs.
yum install sshfs
Ostatnim krokiem jest dodanie siebie do grupy fuse. W tym celu należy wyedytować plik /etc/group lub wydać polecenie
usermod -G fuse nazwa_usera
Montowanie zdalnego katalogu odbywa się poprzez komendę
sshfs uzytkownik@serwer:/sciezka/do/zdalnego/katalogu ~/katalog_lokalny
W celu odmontowania używamy polecenia
fusermount -u ~/katalog_lokalny
Gdy chcemy automatycznie podmontować zdalny katalog podczas ładowania systemu możemy np. w kde umieścić skrypt powłoki w katalogu /.kde4/Autostart z poleceniem montowania. W Gnome autostart wspólny dla wszystkich użytkowników mamy w katalogu /etc/xdg/autostart, dla poszczególnych w odpowiednim katalogu domowym ~/.config/autostart. Można też zarządzać programami uruchamianymi przy starcie wpisując w konsoli gnome-session-properties (więcej na stronie). Innym sposobem jest umieszczenie wpisu podobnego do poniższego w pliku /etc/fstab
sshfs#użytkownik@zdalny_serwer:/zdalny_katalog   /home/użytkownik/katalog_montowania/    fuse    users,noauto    0 0
Następnie musimy zdefiniować samo montowanie zasobu, ale w momencie jak jest już skonfigurowana sieć. Możemy to zrobić poprzez dodanie poniższego wpisu do pliku bashrc, który zostaje wykonany gdy poprawnie się zalogujemy do systemu.
mount /katalog_montowania