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:
1
Repositories Directory
Specify an absolute path outside the Ghidra installation:
2
Authentication Mode
Choose your authentication method (see User Authentication)
3
Network Settings
Configure IP addresses and ports if needed
4
Memory Allocation
Adjust
wrapper.java.maxmemory based on your repository sizeMemory 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
hostname
Remote access hostname or IPv4 address for client connections
IP address
Bind server to specific IPv4 interface
port
default:"13100"
Base TCP port (server uses 3 consecutive ports)
flag
Enable reverse DNS lookup for IP addresses when logging
Authentication Options
number
Authentication mode: 0 (password), 1 (AD), 2 (PKI), 4 (JAAS)
domain
Active Directory domain name (e.g.,
-dmydomain.com)days
default:"1"
Password expiration days (0 = no expiration)
flag
Allow specifying user ID at login time
flag
Auto-create users on successful authentication (AD and JAAS only)
flag
Enable anonymous read-only access to designated repositories
Installation and Management
Windows Installation
1
Install Service
Run
svrInstall.bat with Administrator privileges2
Start Service
Use Service Control Panel or:
3
Verify Status
Console Mode (Diagnostic)
Console Mode (Diagnostic)
Linux/macOS Installation
1
Set Java Home (Recommended)
Edit
ghidraSvr script before installation:2
Install Service
3
Start Service
Service Commands
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:Repository Backup
1
Stop Server
2
Backup Directory
3
Restart Server
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
1
Backup
Backup repositories and configuration files
2
Uninstall Old Service
3
Extract New Version
Unzip new Ghidra distribution to new directory
4
Migrate Configuration
Copy
wrapper.app.parameter.* lines from old to new server.conf5
Copy Repositories
If not using external directory, copy repositories to new installation
6
Install New Service
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
