Last active
November 3, 2024 19:16
-
-
Save sebsto/6af5bf3acaf25c00dd938c3bbe722cc1 to your computer and use it in GitHub Desktop.
Start VNCServer on Mac1 EC2 Instance
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# YouTube (english) : https://www.youtube.com/watch?v=FtU2_bBfSgM | |
# YouTube (french) : https://www.youtube.com/watch?v=VjnaVBnERDU | |
# | |
# On your laptop, connect to the Mac instance with SSH (similar to Linux instances) | |
# | |
ssh -i <your private key.pem> ec2-user@<your public ip address> | |
# | |
# On the Mac | |
# | |
# Set a password for ec2-user | |
sudo passwd ec2-user | |
# Enable VNC Server (thanks arnib@amazon.com for the feedback and tests) | |
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \ | |
-activate -configure -access -on \ | |
-configure -allowAccessFor -specifiedUsers \ | |
-configure -users ec2-user \ | |
-configure -restart -agent -privs -all | |
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \ | |
-configure -access -on -privs -all -users ec2-user | |
exit | |
# | |
# On your laptop | |
# Create a SSH tunnel to VNC and connect from a vnc client using user ec2-user and the password you defined. | |
# | |
ssh -L 5900:localhost:5900 -C -N -i <your private key.pem> ec2-user@<your public ip address> | |
# open another terminal | |
open vnc://localhost | |
# | |
# On the mac EC2 instance, resize the APFS container to match EBS volume size | |
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html#mac-instance-increase-volume | |
# | |
PDISK=$(diskutil list physical external | head -n1 | cut -d" " -f1) | |
APFSCONT=$(diskutil list physical external | grep "Apple_APFS" | tr -s " " | cut -d" " -f8) | |
sudo diskutil repairDisk $PDISK | |
# Accept the prompt with "y", then paste this command | |
sudo diskutil apfs resizeContainer $APFSCONT 0 | |
# | |
# (optional) On the mac EC2 Instance, set screen resolution | |
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html#mac-screen-resolution | |
# | |
brew tap jakehilborn/jakehilborn && brew install displayplacer | |
displayplacer list | |
displayplacer "id:<screenID> res:<width>x<height> origin:(0,0) degree:0" | |
RES="2560x1600" | |
displayplacer "id:69784AF1-CD7D-B79B-E5D4-60D937407F68 res:${RES} scaling:off origin:(0,0) degree:0" | |
Is there a way to run an instance with a disabled SIP?
@startergo it is not currently possible to disable SIP on EC2 Mac. Fully enabling and disabling SIP requires restarting the EC2 Mac host in Recovery mode. Unfortunately, this is not possible for EC2 Mac instances as there's no way for you to access the host once it's in Recovery Mode.
Even with tunneling via SSH I just get "Screen Sharing is not permitted on “localhost”. Disable and re-enable Screen Sharing or Remote Management in System Settings before trying again." after entering user/pass.
@torarnv this gist is 4 years old. Have you check the official documentation ?
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-mac-instance.html
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@scottmalkie thanks for the great info. However, it appears
displayplacer list
only shows a connection after a VNC connection is established. Are you aware of an approach that provides native display capabilities (as a macOS equivalent to Xfvb) without requiring a connection to be opened? Note: we're exploring using Macs in a CI/CD context.On a related note, I saw a comment that M1 Macs may support that out of the box.