przejście do zawartości
Jan Kończak
Narzędzia użytkownika
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Ostatnie zmiany
Menadżer multimediów
Indeks
Jesteś tutaj:
start
»
sk2
»
zajecia_zdalne
sk2:zajecia_zdalne
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Instrukcje do zdalnych zajęć ====== ===== Narzędzia ===== Do zajęć zdalnych koniecznie musicie mieć do dyspozycji: * system operacyjny GNU/Linux * dowolny współczesny kompilator C/C+''''+: * polecane: [[https://gcc.gnu.org/|GCC]] w wersji ≥9 lub [[https://clang.llvm.org/|Clang]] w wersji ≥ 9 * uwaga: proszę sprawdzić działanie kompilatora na [[https://gitlab.cs.put.poznan.pl/jkonczak/sk2_examples/raw/master/l4/l4_z1_lambda.cpp|przykładowym pliku]] - plik powinien się kompilować komendą ''c++ -pthread --std=c++2a l4_z1_lambda.cpp''((jeśli kompilator narzeka na ''--std=c++2a'', to znaczy że jest dość stary; sugeruję zaktualizować, ale jeśli działa z ''--std=c++1z'', to na potrzeby zajęć wystarczy)) * IDE lub edytor tekstowy do pisania kodu: * przykładowe IDE: [[https://www.kdevelop.org/|kdevelop]], [[https://www.qt.io/product/development-tools|QtCreator]], [[https://www.jetbrains.com/clion/|CLion]] (wersja dla edukacji jest bezpłatna) * przykładowo edytory: VS Code, Geany, Code::Blocks, CodeLite * narzędzia: * do uruchamiania prostych połączeń sieciowych: ''nc''/''ncat''/''netcat''/''socat'' * do wyświetlania istniejących połączeń: ''netstat''/''ss'' Dodatkowo warto zainstalować: * strony podręcznika systemowego (''man'') * narzędzia: * ''gdb'' (debugger) * ''valgrind'' (narzędzie znajdujące błędy zarządzania pamięcią) * ''strace'' (narzędzie wyświetlające i tłumaczące wywołania systemowe) * ''wireshark'' * wygodny emulator terminala ===== Metoda #1: Udostępnienie VNC prowadzącemu ===== # tl;dr (czyli dla osób które chcą gotowe polecenia i nie chce im się czytać dalej) wget http://www.cs.put.poznan.pl/jkonczak/pub/sk2/sk2-vpn-ca.crt sudo openvpn --dev tap --client --ca sk2-vpn-ca.crt --auth-user-pass --daemon --remote ipv4.jprofesorek.mooo.com x11vnc -quiet -nopw -forever -display :0 & sleep 5 ip -4 addr show dev tap0 ==== Krok 1: dołączenie do VPNa ==== W trakcie zajęć wykorzystywany będzie OpenVPN. Należy zainstalować odpowiednią paczkę (zwykle o nazwie ''openvpn'') w systemie z którego będzie udostępniany ekran. //Uwaga:// VPN jest skonfigurowany tak, by była łączność między wszystkimi podłączonym osobami, co będzie wykorzystywane w trakcie zajęć, ale niesie za sobą dość oczywiste konsekwencje bezpieczeństwa. Do uruchomienia VPNa potrzebny jest: * plik CA: <html><strong><a href="/jkonczak/pub/sk2/sk2-vpn-ca.crt">sk2-vpn-ca.crt</a></strong></html>, * adres: ''ipv4.jprofesorek.mooo.com'', * informacja że VPN pracuje na warstwie 2 modelu ISO/OSI, tzn. ''device tap'' * (port i protokół domyślne - 1194/udp) * nazwa użytkownika i hasło, przekazane innym kanałem przez prowadzącego. \\ Nazwę użytkownika i hasło można dla wygody wpisać do pliku o nieskomplikowanym formacie: <code - userPass.txt>theExampleUsername someIncorrectPassword</code>Uwaga: plikz hasłem musi mieć uprawnienia zabraniające odczyt komukolwiek poza bieżącym użytkownikiem (do ustawienia uprawnień można użyć np. ''chmod go-rwx userPass.txt'') Polecenie uruchamiające VPNa, należy je uruchamiać z __roota__ (**wybierz jedno**): * Wersja 1 - wszystko w linii poleceń: <code>openvpn --dev tap --client --ca /somewhere/sk2-vpn-ca.crt --auth-user-pass /somewhere/userPass.txt --remote ipv4.jprofesorek.mooo.com</code> Uwaga 1: można pominąć nazwę pliku '' /somewhere/userPass.txt'', wtedy program pyta o nazwę użytkownika / hasło. \\ Uwaga 2: można dodać opcję ''--daemon'', która przenosi program w tło. Bez tej opcji program openvpn zajmuje konsolę (a zamknięcie okna z konsolą przerywa połączenie). * Wersja 2 - przygotuj plik konfiguracyjny: <code - sk2-vpn.ovpn>client remote ipv4.jprofesorek.mooo.com dev tap ca /somewhere/sk2-vpn-ca.crt auth-user-pass /somewhere/userPass.txt #daemon</code> następnie uruchom polecenie: <code>openvpn --config sk2-vpn.ovpn</code> * Wersja 3 - użyj graficznego konfiguracja dla NetworkManagera (ta wersja potrzebuje NetworkManagera i może potrzebować dodatkowych pakietów, np. ''network-manager-openvpn-gnome''). **Sprawdzenie czy wszystko poszło dobrze:** po wykonaniu wybranej z komend, w wynikach komendy ''ip address'' powinien pojawić się interfejs ''tap0'' z adresem IP z sieci 10.0.9.0/24. Dodatkowo powinna działać komenda ''ping 10.0.9.1''. <html><small></html>Dla zainteresowanych [[sk2:vpn_serwer_dla_zajec|konfiguracja serwera]]<html></small></html> ==== Krok 2: uruchomienie VNC ==== Przykładowe polecenie używa serwer [[https://en.wikipedia.org/wiki/X11vnc|x11vnc]] aby udostępnić bieżącą sesję graficzną. \\ <html><small></html> Możecie oczywiście użyć dowolnego innego serwera VNC, np. [[https://tigervnc.org/|TigerVNC]], który pozwala zarówno udostępnić bieżącą sesję (np. ''x0vncserver --SecurityTypes None'') jak i stworzyć nową wirtualną sesję Xów (bez konieczności wykorzystania Xvfb).<html></small></html> Udostępnienie całej sesji graficznej: x11vnc -forever -display :0 & Oczywiście normalnie VNC pozwala na kontrolę myszy i klawiatury. W ''x11vnc'' można dodać opcję ''-viewonly'' żeby pozwolić tylko na podglądanie ekranu. \\ Inne przydatne opcje to ''-quiet'' która zmniejsza gadatliwość standardowego wyjścia i ''-nopw'' która pomija komunikat że serwer nie jest chroniony hasłem. <html><small></html> Można poeksperymentować z udostępnieniem części ekranu (poniższe polecenia wymagają zainstalowania ''xwininfo'' do wyboru okna). \\ Udostępnienie jednego okna (nie udostępnia innych okien, np. oknien dialogowych czy okien menu): \\ ''x11vnc -forever -id pick -connect :0'' \\ Udostępnienie obszar jednego okna (uwaga: jeśli je coś zasłoni, x11vnc przesyła to co je zasłoniło): \\ ''x11vnc -forever -sid pick -connect :0'' \\ Udostępnienie jednej aplikacji (uwaga: u mnie nie działało prawidłowo): \\ ''x11vnc -appshare -id pick -connect :0'' <html></small></html> Aby sprawdzić czy VNC działa prawidłowo, należy spróbować połączyć się do (z innego komputera) np. poleceniem vncviewer <ip lub nazwa domenowa> **Po uruchomieniu VPN i VNC należy na początku zajęć przesłać do prowadzącego swój adres IP z sieci 10.0.9.0/24.** ===== Metoda #2: Wtyczka 'Live Share' w VS code ===== Edytor VisualStudio Code pozwala udostępniać bieżąco edytowany projekt przy użyciu rozszerzenia [[https://visualstudio.microsoft.com/pl/services/live-share/|Live Share]]. - pobrać i zainstalować VS Code, - zainstalować wtyczkę Live Share (menu view/extensions), - zalogować się, np. kontem Microsoft ([[https://instrukcje.put.poznan.pl/microsoft-office365-tworzenie-konta/]]), - wybrać 'live share' (1), wystartować współdzielenie (2), wybrać 'invite' (3) i przekazać link prowadzącemu (numery odnoszą się do ilustracji poniżej) - po pojawieniu się prośby o dołączenie osoby, zaakceptować tę prośbę. {{:sk2:vscode_ls.png|}} **Uwaga**: Osoby korzystające z tej metody powinny: * uruchomić u siebie usługę daytime na TCP i UDP * lub wykonać z roota polecenie zastępujące daytime, np: \\ ''socat udp-l:daytime,fork exec:date & socat tcp-l:daytime,fork exec:date &''
sk2/zajecia_zdalne.1604408869.txt.gz
· ostatnio zmienione: 2020/11/03 14:07 (edycja zewnętrzna)
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Złóż / rozłóż wszystko
Do góry