Více o Screen Sharing

screenshaingiconVzdálená plocha v OS X není nic jiného než prachobyčejné VNC. Když si ale spolu povídají dva Macy, dostaneme mnoho funkcí navíc. Dnešní část bude o nastavování. Zapnout Screen Sharing v System Preferences je trivální záležitost nehodná postu. Když to ovšem zkusíme v Terminálu, zábavnost celé operace se prudce zvýší 🙂

Screen Sharing versus screensharingd

Alfou a omegou pro použití vzdálené plochy je zapnutí serveru na cílovém počítači. V OS X tuto roli zastupuje screensharind démon, který sedí na portu 5900 a čeká na spojení.

Uživatel Screen Sharing zapne v System Preferences -> Sharing
screensharing
Administrátor připojený k Macu vzdáleně pomocí ssh využije launchctl, jenž dá launchd vědět, že má spustit screensharingd (testováno v 10.8).

#On
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
#Off
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.screensharing.plist

Použití přepínače -w znamená, že se screensharingd bude spouštět vždy při startu systému. Přepínač nemění hodnu klíče disabled na false uvnitř com.apple.screensharing.plist, ale v
/private/var/db/launchd.db/com.apple.launchd/overrides.plist

Screen Sharing versus VNC

Screen Sharing je postavený na VNC (protokol RFB). Implementace v OS X je specifická způsobem autentizace uživatele a šifrováním přenosu (komunikace Mac <-> Mac). Pro klasické VNC klienty musí být nastaveno vnc heslo o maximálně osmi znacích.

vncpassword

To samé v Terminálu

Nastavení hesla z příkazového řádku bude malinko komplikovanější. Nejprve budete muset heslo zxorovat s klíčem “1734516E8BA8C5E2FF1C39567390ADCA”. Naštěstí na to už někdo napsal perlovský skript a není třeba nic vymýšlet -> Mac OS X Hints

Výsledný řetězec uložíte do souboru com.apple.VNCSettings.txt v /Library/Preferences, který může číst pouze root (práva 400).

Na závěr se musí podpora “VNC Legycy Connections” zapnout ->
defaults write /Library/Preferences/com.apple.RemoteManagement.plist VNCLegacyConnectionsEnabled -bool true

Tento plist taktéž ukládá nastavení pro druhé přepínátko v Sharing -> Computer Settings = “Anyone may request permission to control screen”
defaults write /Library/Preferences/com.apple.RemoteManagement.plist ScreenSharingReqPermEnabled -bool true

Tolik k nastavování serveru. Čas kouknout na klientskou aplikaci Screen Sharing.app

Screen Sharing versus Finder

Většina uživatelů spouští Screen Sharing aplikaci (klient vzdálené plochy) z bočního panelu ve Finderu, kde v části Shared vybere cílový Mac a klikne na “Share Screen…”
Screen Sharing.app lze nepřímo spustit také přes Go -> Connect to Server (⌘K) -> vnc://adresa.

Samotnou aplikaci najdete na cestě: /System/Library/CoreServices/Screen Sharing.app. Doporučuji jí přidat do Docku (Při kliknutím pravou myší na ní vyjede seznam posledních spojení).

screenpath

Screen Sharing versus autentizace

Při připojení k jinému Macu může přihlášení probíhat třemi způsoby.
1) Požádání o kontrolu obrazovky (zapíná se pod Sharing -> Computer Settings)
2) Přihlášení účtem oprávněného uživatele
3) Přihlášení pomocí apple id svázaného s účtem oprávněného uživatele
screenauth
Povolené uživatele nebo skupiny lze snadno naklikat v Sharing -> Screen Sharing.
Ti jsou pak přidání do skupiny com.apple.access_screensharing, která je oprávněna k použití vzdálené plochy.

Následující výstup ukazuje stav atributů skupiny před a po přidání uživatele michal do seznamu oprávněných uživatelů :

HungryHippo.local 22:14:45>> dscl . read /groups/com.apple.access_screensharing
AppleMetaNodeLocation: /Local/Default
GeneratedUID: UUID-UUID-UUID-UUID-UUIDUUID (tato skupina)
NestedGroups: UUID-UUID-UUID-UUID-UUIDUUID (skupina Administrators)
PrimaryGroupID: 401
RealName:
 Screen Sharing ACL
RecordName: com.apple.access_screensharing
RecordType: dsRecTypeStandard:Groups

HungryHippo.local 22:14:55>> dscl . read /groups/com.apple.access_screensharing
AppleMetaNodeLocation: /Local/Default
GeneratedUID: UUID-UUID-UUID-UUID-UUIDUUID (tato skupina)
GroupMembers: UUID-UUID-UUID-UUID-UUIDUUID (michal)
GroupMembership: michal
NestedGroups: UUID-UUID-UUID-UUID-UUIDUUID (skupina Administrators)
PrimaryGroupID: 401
RealName:
 Screen Sharing ACL
RecordName: com.apple.access_screensharing
RecordType: dsRecTypeStandard:Groups

Se skupinami lze pracovat buď pomocí dscl nebo dseditgroup.

Screen Sharing versus šifrování

Pokud Screen Sharing klient komunikuje s dalším Macem, defaultně jsou šifrována přenášená hesla a informace o stiknutých klávesách. Chcete-li zapnout šifrování veškerých dat pomocí AES-128, stačí zajít do Screen Sharing -> Preferences
screensharingsettings
..nebo případně upravit plist obsahující toto nastavení.
defaults write com.apple.screensharing encryptRFBDataStream -bool true

Během připojení k jinému OS se Screen Sharing chová jako každý jiný VNC klient a může být na místě sáhnout po zabezpečení spojení pomocí ssh tunelu.

V příštím postu budu řešit sdílený clipboard, drag & drop kopírování a uložení adresy do .vncloc souboru.