Für CI/CD-Workflows, automatisierte Builds und Server-Aufgaben brauchst Du keinen Bildschirm — SSH reicht. Der Mac ist im Grunde ein Unix-System, alles was Du auf Linux per SSH machst, geht auch auf macOS. Hier die Setup-Schritte und typische Workflows.
SSH ist standardmäßig aktiv
Bei uns ist SSH bei allen Mac minis aktiviert. Du kannst sofort loggen:
ssh user@<deine-mac-ip>
Login mit dem macOS-User-Passwort aus unserer Setup-Mail.
Bei aktivem AnyDesk + SSH: beide funktionieren parallel.
Public-Key-Authentifizierung einrichten
Für sichere und automatisierte SSH-Logins ist Public-Key-Auth Pflicht. Passwort-Login solltest Du danach deaktivieren.
Auf Deinem Rechner: Schlüssel generieren
Wenn Du noch keinen SSH-Key hast:
ssh-keygen -t ed25519 -C "macmini-xaweho"
Standard-Pfad bestätigen (~/.ssh/id_ed25519). Optional Passphrase setzen.
Public-Key auf den Mac
Variante 1: ssh-copy-id
ssh-copy-id user@<deine-mac-ip>
Passwort eingeben → Public-Key wird auf Mac kopiert.
Variante 2: manuell
Public-Key kopieren:
cat ~/.ssh/id_ed25519.pub
Auf Mac (per AnyDesk oder SSH mit Passwort): in ~/.ssh/authorized_keys einfügen:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ssh-ed25519 AAAA... macmini-xaweho" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Test
ssh user@<deine-mac-ip>
Sollte ohne Passwort-Abfrage funktionieren.
Passwort-Login deaktivieren
Auf Mac als Admin:
sudo nano /etc/ssh/sshd_config
Folgende Zeilen suchen/anpassen:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
SSH-Daemon neu laden:
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
Ab jetzt nur noch Login per Public-Key. Sicherer.
SSH-Konfig auf Deinem Rechner
In ~/.ssh/config:
Host macmini
HostName <deine-mac-ip>
User user
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
Dann reicht:
ssh macmini
Tmux für persistente Sessions
Wenn Du lange laufende Builds startest, willst Du nicht, dass die durch Disconnect abbrechen.
Lösung: tmux (kommt standardmäßig auf macOS).
ssh macmini
tmux new -s build
# in der tmux-Session
xcodebuild -workspace ./MyApp.xcworkspace -scheme MyApp ...
# Ctrl+B, dann D zum Detachen
SSH-Verbindung kann dann disconnected werden — der Build läuft weiter. Beim nächsten Connect:
ssh macmini
tmux attach -t build
Du siehst den Build-Fortschritt wie nichts gewesen wäre.
Xcode per CLI
Xcode hat ein CLI-Tool: xcodebuild.
Beispiel-Build:
xcodebuild -workspace MyApp.xcworkspace \
-scheme MyApp \
-configuration Release \
-archivePath ~/Builds/MyApp.xcarchive \
archive
Fastlane-User können mit fastlane direkt auf dem Mac arbeiten.
Für Apple-Code-Signierung muss Apple-ID + Developer-Cert eingerichtet sein — das geht nur mit GUI-Login (AnyDesk / Screen Sharing) beim ersten Setup. Danach läuft’s headless.
GitHub Actions Runner registrieren
Self-hosted GitHub-Actions-Runner auf dem Mac für iOS-Builds:
Auf GitHub
Repository → Settings → Actions → Runners → New self-hosted runner → macOS auswählen.
GitHub gibt Dir Befehle mit Token.
Auf dem Mac per SSH
mkdir actions-runner && cd actions-runner
curl -o actions-runner-osx-arm64-2.x.x.tar.gz -L https://github.com/actions/runner/releases/download/v2.x.x/...
tar xzf actions-runner-osx-arm64-2.x.x.tar.gz
./config.sh --url https://github.com/<deine-org>/<dein-repo> --token <token>
./run.sh
Für Hintergrund-Service:
sudo ./svc.sh install
sudo ./svc.sh start
Runner läuft als macOS-Service, nimmt automatisch Workflows an.
GitLab CI Runner
Analog für GitLab:
brew install gitlab-runner
gitlab-runner register
# Server-URL und Token aus GitLab eingeben
gitlab-runner run
Für Hintergrund-Service:
gitlab-runner install
gitlab-runner start
Andere CI/CD-Plattformen
- Bitrise: hat eigenen Setup-Guide für Self-hosted Mac-Runner
- CircleCI: Cloud-only für macOS, kein Self-hosted
- Buildkite: sehr gut für Mac-Self-hosted, einfaches Setup
File-Transfer per SCP / SFTP
# Datei vom Mac runter
scp macmini:~/Builds/MyApp.ipa ./
# Datei zum Mac hoch
scp ./local-file.txt macmini:~/
# Rekursiver Sync
rsync -avz ./local-folder/ macmini:~/Projects/
Für regelmäßigen Sync: rsync mit --delete für 1:1-Spiegelung.
Tunneling: Web-UIs auf dem Mac erreichen
Wenn ein Tool auf dem Mac eine Web-UI auf Port 8080 hat, aber nicht öffentlich erreichbar sein soll:
ssh -L 8080:localhost:8080 macmini
Dann auf Deinem Rechner Browser → http://localhost:8080 → Du siehst die Mac-Web-UI durch SSH-Tunnel.
Praktisch für:
- Selenium-Hub
- Test-Server
- Lokale Dev-Tools
SSH-Multiplexing
Wenn Du oft SSH zum gleichen Mac aufmachst, beschleunigt Multiplexing das Verbinden:
In ~/.ssh/config:
Host macmini
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 10m
Erste Verbindung dauert normal, weitere innerhalb 10 Min sind quasi instant.
SSH-Key auf mehreren Geräten
Wenn Du von Mac UND iPad auf den Mini willst: separater SSH-Key pro Gerät.
In ~/.ssh/authorized_keys auf dem Mini:
ssh-ed25519 AAAA... mike-macbook
ssh-ed25519 AAAA... mike-ipad
ssh-ed25519 AAAA... mike-buildserver
Beim Geräte-Verlust: einzelnen Key entfernen.
Mosh als Alternative zu SSH
Mosh ist UDP-basierte SSH-Variante, robuster bei wackligen Verbindungen (Mobilfunk, Roaming):
brew install mosh
mosh user@<deine-mac-ip>
Auf Mac-Seite Mosh installiert haben — schreib uns Ticket falls nötig.
Vorteil: Verbindung bricht nicht bei kurzen Internet-Aussetzern, Reconnect ist unsichtbar.
SSH-Ablauf-Konfiguration
Für ungenutzte SSH-Sessions automatisch trennen:
In /etc/ssh/sshd_config auf dem Mac:
ClientAliveInterval 300
ClientAliveCountMax 3
Nach 15 Min Inaktivität trennt der Server.
Für Server-Aliase auf Deiner Seite (verhindert Disconnect bei langem Idle):
Host *
ServerAliveInterval 60
Häufige Stolperfallen
„Permission denied (publickey)” trotz korrekt platziertem Key
- Datei-Permissions auf Mac:
~/.sshmuss700,authorized_keysmuss600sein - Key-Format korrekt?
ssh-ed25519 AAAA...ohne Zeilenumbruch
SSH-Verbindung extrem langsam beim Verbinden
- DNS-Reverse-Lookup deaktivieren in
/etc/ssh/sshd_config:UseDNS no - Dann SSH-Service neu laden
xcodebuild per SSH funktioniert nicht — „Failed to authorize …”
Apple braucht „GUI-Session” für manche Code-Signing-Operationen. Workaround:
- Per AnyDesk einmalig einloggen, Apple ID + Developer-Cert konfigurieren
- Danach läuft
xcodebuildheadless
„Operation not permitted” bei Datei-Zugriff
macOS hat System Integrity Protection und App Sandbox. Manche Pfade sind geschützt.
Lösung: per AnyDesk → Systemeinstellungen → Datenschutz & Sicherheit → SSH und Terminal Vollzugriff geben.
Häufige Fragen
Kann ich SSH-Tunnel als VPN-Ersatz nutzen?
Eingeschränkt. SSH-Dynamic-Port-Forwarding (ssh -D 1080) macht SOCKS-Proxy. Für richtige VPN-Funktion lieber WireGuard.
Wie viele parallele SSH-Sessions?
Default macOS: 10. In MaxSessions in sshd_config erhöhbar.
SSH-Logs auf dem Mac einsehen?
sudo tail -f /var/log/system.log | grep sshd zeigt SSH-Login-Versuche.
Mac per SSH neu starten?
sudo shutdown -r now
Kann ich SSH-Port von 22 auf was anderes setzen?
In /etc/ssh/sshd_config Port 2222 einstellen, dann mit ssh -p 2222 ... verbinden. Sicherheit-Effekt minimal — bessere Lösung: Public-Key-Auth + Fail2Ban.
Fail2Ban auf macOS?
Wir aktivieren auf Wunsch ein Pendant. Schreib uns Ticket — wir konfigurieren pf-Firewall mit Brute-Force-Schutz.
SSH-Agent-Forwarding sicher?
Mit Vorsicht nutzen. Wenn Du ForwardAgent yes nutzt, kann ein Angreifer auf dem Mac auf Deine lokalen SSH-Keys zugreifen. Standard: aus.
WoL — Mac per Wake-on-LAN starten? Mac mini supports Wake-on-LAN. Wir können WoL-Setup machen — schreib uns Ticket bei Bedarf.
Weiter geht’s
Erste Anmeldung mit AnyDesk
Was Du nach der Bestellung Deines Mac mini bekommst und wie der erste Zugriff über AnyDesk abläuft. Standard-Setup, das sofort funktioniert.
AnyDesk tief konfigurieren
AnyDesk auf dem Mac so einstellen, dass er sicher und stabil als Daueverbindung funktioniert. Unbeaufsichtigter Zugriff, 2FA, Sicherheits-Settings.
Apple Screen Sharing (VNC) aktivieren und nutzen
macOS-eigenes Remote-Desktop. Wenn AnyDesk nicht passt: Screen Sharing aktivieren, von Mac/iPad/Windows zugreifen, Performance-Tuning.
Andere Remote-Tools für Mac mini
Wenn AnyDesk nicht passt: RustDesk, Jump Desktop, Splashtop, Microsoft Remote Desktop, TeamViewer, Parsec. Wann was Sinn macht.