Kilka praktycznych ułatwień w pracy zdalnej
Często zdarza mi się wysyłać pliki na zewnętrzne serwery. Wykorzystań jest z reguły wiele: zwykłe udostępnienie zdjęć, jakaś edycja skryptów na stronie, synchronizacja, czy przetestowanie skryptów lub aplikacji. Najczęściej robię to przy użyciu SSH/SCP, ale też zdarza mi się korzystać z Dropboxa. Jak sobie można ułatwić pracę zdalną?
Wskazówka. Linux pozwala na montowanie dysków do dowolnych katalogów w strukturze drzewa katalogów, a także na tworzenie dowiązań symbolicznych. Osoby początkujące często nie potrafią dojrzeć dobrobytu tych rozwiązań, a nawet narzekają na „skomplikowaną” strukturę drzewa katalogów. Jednak te rzeczy potrafią bardzo ułatwić pracę. W tej notce pokażę ich niektóre praktyczne wykorzystania.
Przykład 1. Przy pomocy programu sshfs (*) wykorzystując protokół SSH można podmontować zewnętrzny katalog w naszym lokalnym drzewie katalogów. Jakie są tego zalety? Otóż, używając dowolnego programu poruszamy się po naszej zewnętrznej zawartości tak jakbyśmy ją mieli fizycznie na dysku. Trochę to może przypominać zachowanie z Dropboxa, z tą jednak różnicą, że w momencie jak nie jest nawiązane połączenie to pliki są niewidoczne w katalogu lokalnym. Żeby wgrać plik na serwer po prostu przekopiowujemy go do odpowiedniego katalogu. Tak samo bezpośrednio zmiany możemy zapisywać do tego katalogu z tą małą wadą, że programy będą „mielić” dopóki plik w całości nie zostanie zapisany na zewnętrznym serwerze. Jak to zrobić? Temu wszystkiemu służy polecenie sshfs host_zdalny:/katalog_zdalny /katalog_lokalny -o allow_other, przy czym argument -o allow_other jest opcjonalny, ale pozwala na pełny dostęp do plików każdemu z użytkowników naszego systemu. Można te polecenia dodać do skryptów uruchamiających się podczas startu systemu, np. do ~/.profile. Jednak wtedy trzeba umożliwić logowanie się przez SSH bez podawania hasła, a przy użyciu kluczy. Jeżeli chcemy odmontować katalog zdalny to wywołujemy polecenie fusermount -u /katalog_lokalny
Przykład 2. Aby logować się bez podawania hasła najpierw musimy wygenerować na lokalnym komputerze parę kluczy – klucz prywatny i klucz publiczny. W tym celu wywołujemy polecenie ssh-keygen. Na pierwsze pytanie o ścieżkę lokalizacji klucza prywatnego wciskamy ENTER (zostanie ustawiona domyślna – znajdująca się w nawiasach kwadratowych). Na pytanie o hasło również naciskamy ENTER (zostanie ustawione logowanie bez hasła). Następnie trzeba potwierdzić poprzednie hasło, czyli w naszym wypadku znowu ENTER. Mamy wygenerowaną parę kluczy. Teraz przy pomocy ssh-copy-id kopiujemy na serwer zdalny nasz klucz publiczny. Aby to zrobić wywołujemy polecenie ssh-copy-id -i ~/.ssh/id_rsa.pub login@host_zdalny. Po standardowej wymianie kluczy i podaniu hasła otrzymujemy komunikaty odnośnie stanu naszej operacji. Teraz możemy sprawdzić, czy wszystko zostało wykonane poprawnie poprzez standardowe logowanie na SSH.
Przykład 3. Również dowiązania symboliczne mogą nam ułatwić synchronizację plików. Pokażę to na przykładzie Dropboxa. Pliki, które chcemy synchronizować z Dropboxem zapisujemy do katalogu „Dropbox”. Jednak są tacy, którzy woleli synchronizować różne katalogi bez redundancji danych. Co wtedy zrobić? Tutaj przydają się dowiązania symboliczne, które warto wyjaśnić wszystkim początkującym: otóż, nie są one skrótami do plików znanymi z systemów Windows. Przechodząc do katalogu „Dropbox” wykonujemy polecenie ln -s /sciezka_do_podmontowania katalog_w_dropboxie,czyli np. chcąc, aby katalog /home/user był na Dropboxie w folderze „Domowy” wykonujemy polecenie ln -s /home/user Domowy.
(*) może istnieć potrzeba doinstalowania pakietu sshfs