Vzdá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
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.
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í).
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
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
..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.