Overview
The Ghidra Server enables multi-user collaborative reverse engineering by providing centralized repository management, version control, and concurrent access to Ghidra projects. It utilizes the YAJSW Java service wrapper and provides OS-specific scripts for running as a system service.Architecture
The Ghidra Server is incorporated into the standard Ghidra distribution:- Unpack Ghidra distribution
- Configure server settings
- Perform OS-specific installation
- Start the service
Server Configuration
Editing server.conf
Before installation, modifyserver/server.conf to configure:
Authentication Mode
Choose your authentication method (see User Authentication)
Memory Considerations
The server maintains in-memory state for all repositories. Calculate memory requirements:User Authentication
Ghidra Server supports multiple authentication modes:Authentication Modes
- No Authentication
- Local Password (-a0)
- Active Directory (-a1)
- PKI Certificates (-a2)
- JAAS (-a4)
Any added user can connect without password.
SSH Authentication
When using-a0 mode with -ssh option, headless analyzers can authenticate via SSH keys:
Ghidra Server does not support OpenSSH key format or ecdsa/ed25519 key types. Use RSA with PEM format.
Server Options
Networking Options
Remote access hostname or IPv4 address for client connections
Bind server to specific IPv4 interface
Base TCP port (server uses 3 consecutive ports)
Enable reverse DNS lookup for IP addresses when logging
Authentication Options
Authentication mode: 0 (password), 1 (AD), 2 (PKI), 4 (JAAS)
Active Directory domain name (e.g.,
-dmydomain.com)Password expiration days (0 = no expiration)
Allow specifying user ID at login time
Auto-create users on successful authentication (AD and JAAS only)
Enable anonymous read-only access to designated repositories
Installation and Management
Windows Installation
Console Mode (Diagnostic)
Console Mode (Diagnostic)
Linux/macOS Installation
Service Commands
| Command | Description |
|---|---|
start | Start the Ghidra Server service |
stop | Stop the running service |
restart | Stop and restart the service |
status | Display current service status |
console | Run in foreground (diagnostic mode) |
Server Administration
ThesvrAdmin script manages users and repositories:
User Management
- Add User
- Remove User
- Reset Password
- Set PKI DN
Repository Access
Repository Migration
Migrate from Mangled to Indexed filesystem storage:Server Logs
The server produces two log files:| Log File | Location | Purpose |
|---|---|---|
wrapper.log | Ghidra installation root | Service wrapper output |
server.log | Repositories directory | Server application log |
Repository Backup
While backups can be taken while the server is idle, it’s safest to stop the server during backup operations.
Clearing Obsolete Checkouts
Admins can clear checkouts via Ghidra client or command line:PKI Certificates
Server Certificate Configuration
Editserver.conf to specify server keystore:
Managing Certificate Authorities
Thecacerts file can be in PEM or JKS format:
CA certificates in PEM format should have an extra blank line after each
END CERTIFICATE line when concatenating.Upgrading Server
Troubleshooting
Common Issues
Connection Errors
Connection Errors
Symptom:
non-JRMP server at remote endpointCause: Incompatible Ghidra client versionSolution: Ensure client and server versions are compatibleWindows Watch Service Error
Windows Watch Service Error
Symptom:
ERROR Incorrect function (WindowsWatchService)Cause: Repositories not on NTFS/ReFS filesystemSolution: Move repositories to locally-mounted NTFS or ReFS volumeMissing Temp Directory (Windows)
Missing Temp Directory (Windows)
Symptom: Server fails to start as serviceSolution: Add to server.conf:
Linux SELinux
Linux SELinux
Symptom: Server won’t start on LinuxSolution: Disable SELinux in
/etc/selinux/config/dev/random Depletion (Linux)
/dev/random Depletion (Linux)
Symptom: SSL/PKI operations hangSolution: Install
haveged daemon:DNS Configuration
The server publishes a remote access address and listens on interfaces:- Published Address: What clients use to connect (configurable via
-ip) - Listening Address: Which network interfaces accept connections (configurable via
-i)
Source Code References
Next Steps
Version Tracking
Use server for collaborative version tracking sessions
BSim
Store BSim databases on server for team access
