Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

sk2:zajecia_zdalne

To jest stara wersja strony!


Oprogramowanie do zdalnych zajęć

Programowanie niekopoziomowe (zajęcia 1-6)

Qt – 10.11 i 17.11 (grupy wtorkowe) / 25.11 i 2.12 (grupy środowe) (zajęcia 6 i 7)

Java - 24.11 (grupy wtorkowe) / 9.11 (grupy środowe) (zajęcia 8)

DNS - 1.12 (grupy wtorkowe) / 9.12 (grupy środowe) (zajęcia 9)

Kształtowanie ruchu - 8.12 (grupy wtorkowe) / 23.12 (grupy środowe) (zajęcia 10)

Udostępnianie widoku swojego pulpitu

Metoda #1: Udostępnienie VNC prowadzącemu (Linuks)

# 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 & disown
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: sk2-vpn-ca.crt,
  • 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:
    userPass.txt
    theExampleUsername
    someIncorrectPassword

    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ń:
    openvpn --dev tap --client --ca /somewhere/sk2-vpn-ca.crt --auth-user-pass /somewhere/userPass.txt --remote ipv4.jprofesorek.mooo.com

    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:
    sk2-vpn.ovpn
    client
    remote ipv4.jprofesorek.mooo.com
    dev tap
    ca /somewhere/sk2-vpn-ca.crt
    auth-user-pass /somewhere/userPass.txt
    #daemon

    następnie uruchom polecenie:

    openvpn --config sk2-vpn.ovpn
  • 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.

Dla zainteresowanych konfiguracja serwera

Krok 2: uruchomienie VNC

Przykładowe polecenie używa serwer x11vnc aby udostępnić bieżącą sesję graficzną.
Możecie oczywiście użyć dowolnego innego serwera VNC, np. 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).

Udostępnienie całej sesji graficznej:

x11vnc -forever -display :0 & disown

W powyższym poleceniu & disown wrzuca program w tło i odłącza program od bieżącego terminala.

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.

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

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 #1: Udostępnienie VNC prowadzącemu (Windows)

Do zajęć z Qt / Javy można korzystać z Windowsa, stąd krótka instrukcja jak uruchomić VPN+VNC pod Windowsem.

OpenVPN

Należy zainstalować openvpn: https://openvpn.net/community-downloads-2/
Nie udało mi się (ale za bardzo nie próbowałem) skorzystać z GUI, stąd proponuję z uruchomionego jako administrator cmd.exe lub powershella wykonać odpowiednią komendę:
   "C:\Program Files\OpenVPN\bin\openvpn.exe" …
Argumenty dla komendy wyglądają jak w Linuksie.

Przykładowe screeny:

VNC

Przykładowy i dość bezproblemowy serwer VNC to TightVNC.
Inne popularne serwery VNC to np. RealVNC czy TigerVNC.
W każdym przypadku proszę o niewymaganie hasła (ewentualnie podanie hasła prowadzącemu).

Przykładowy screen:

Metoda #2: Wtyczka 'Live Share' w VS code (tylko zajęcia z programowania C/C++)

Edytor VisualStudio Code pozwala udostępniać bieżąco edytowany projekt przy użyciu rozszerzenia Live Share.

  1. pobrać i zainstalować VS Code,
  2. zainstalować wtyczkę Live Share (menu view/extensions),
  3. wybrać 'live share' (1), wystartować współdzielenie (2), wybrać 'invite' (3) i przekazać link prowadzącemu (numery odnoszą się do ilustracji poniżej)
  4. po pojawieniu się prośby o dołączenie osoby, zaakceptować tę prośbę.

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 &
1) 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
2) Paczka libclang-common-8-dev jest wymagana w Ubuntu niezależnie od wersji clanga z niezrozumiałych przeze mnie powodów
sk2/zajecia_zdalne.1607254542.txt.gz · ostatnio zmienione: 2020/12/06 12:35 przez jkonczak