Technical estate inheritance refers to the process of transferring digital infrastructure access from one person or team to another. Whether you are a sysadmin preparing for retirement, a lead developer transitioning projects, or an organization ensuring business continuity, proper documentation of SSH keys and server access is critical. Without it, your team faces unnecessary downtime, security risks, or costly recovery efforts.
This guide walks through creating SSH and server access documentation that makes technical inheritance and secure.
Why Technical Estate Documentation Matters
Every organization has critical infrastructure that only certain individuals can access. When those individuals become unavailable, whether due to role changes, extended leave, or unexpected circumstances, their technical knowledge dies with them. This creates operational risk.
Good documentation serves multiple purposes. It enables continuity during personnel changes. It supports compliance requirements for access auditing. It reduces the time required to onboard new technical staff. And it provides a clear inventory of what exists in your technical environment.
Prerequisites
Before you begin, make sure you have the following ready:
- A computer running macOS, Linux, or Windows
- Terminal or command-line access
- Administrator or sudo privileges (for system-level changes)
- A stable internet connection for downloading tools
Step 1 - Inventorying SSH Keys and Access Points
Before you can document anything, you need to know what exists. Start by creating a complete inventory of every system that requires SSH access.
Discovering Your SSH Keys
Run this command to list all SSH keys in your default location:
ls -la ~/.ssh/
For organizations with multiple keys across different projects, you may need to search more broadly:
find /home -name "id_*" -type f 2>/dev/null
find /root -name "id_*" -type f 2>/dev/null
Document each key with the following information:
- Key filename and full path
- Key type (RSA, Ed25519, ECDSA)
- Creation date (if discoverable)
- Associated servers or services
- Passphrase status (set or unset)
- Key purpose or project association
Mapping Server Access
For each server or service, document the connection details:
Example inventory entry format
server:
hostname: prod-web-01.example.com
ip: 10.0.1.25
ssh_port: 22
user: deploy
key_path: /home/username/.ssh/prod_deploy_key
purpose: Production web server
owner: Platform Team
last_accessed: 2026-03-01
Create a master spreadsheet or YAML file that tracks all servers, their purpose, who has access, and the authentication method used.
Step 2 - Documenting Authentication Methods
SSH access typically relies on several authentication mechanisms. Document each one thoroughly.
Key-Based Authentication
For key-based access, store the public key fingerprint rather than the private key itself:
ssh-keygen -lf ~/.ssh/your_key.pub
This outputs something like 256 SHA256:abcd1234... (ED25519). Record this fingerprint. It allows verification without exposing credentials.
Create a structured document that maps each server to its authorized keys:
authorized_keys:
prod-web-01:
- key_fingerprint: "SHA256:abc123..."
added_date: 2025-06-15
added_by: john.doe
purpose: "Deployment automation"
- key_fingerprint: "SHA256:def456..."
added_date: 2025-08-20
added_by: jane.smith
purpose: "Emergency access"
Password and MFA Documentation
If any systems use password authentication (which we recommend avoiding), document the password vault location and access procedures. For systems with MFA, document which MFA method is configured:
- TOTP (Time-based One-Time Password)
- Hardware security key (YubiKey, SoloKey)
- Push notification to mobile app
Never store actual passwords in plain text. Instead, reference your password manager and document the vault structure.
Step 3 - Create Access Runbooks
Documentation is only useful if others can understand it. Create clear runbooks for common access scenarios.
Basic SSH Connection
For each server, provide the exact connection command:
ssh -i ~/.ssh/prod_deploy_key deploy@prod-web-01.example.com
If non-standard ports are used, include that information:
ssh -i ~/.ssh/prod_deploy_key -p 2222 deploy@prod-web-01.example.com
Jump Host and Bastion Access
Many organizations use bastion hosts or jump servers. Document the complete chain:
First hop - bastion
ssh -i ~/.ssh/bastion_key admin@bastion.example.com
Second hop - internal server (from bastion)
ssh -i ~/.ssh/internal_key webserver@10.0.1.25
For SSH config convenience, document the SSH config entries:
Add to ~/.ssh/config
Host bastion
HostName bastion.example.com
User admin
IdentityFile ~/.ssh/bastion_key
ForwardAgent yes
Host prod-web-01
HostName 10.0.1.25
User webserver
IdentityFile ~/.ssh/internal_key
ProxyJump bastion
Emergency Access Procedures
Document what to do when normal access fails. Include:
- Steps for password reset
- Contact information for infrastructure team
- Procedure for requesting new SSH keys
- Recovery options if SSH config is broken
Step 4 - Secure Storage and Access Control
Your documentation itself becomes a high-value target. Protect it accordingly.
Encryption at Rest
Store sensitive documentation in an encrypted volume or password-protected vault. For plaintext documentation, encrypt the files:
Using age (recommended)
age -p -o documentation.age README.md
Using GPG
gpg -c documentation.md
Access Restrictions
Limit who can view the documentation. Use access control lists or group-based permissions. Audit access regularly.
Regular Updates
Set a schedule to review and update documentation. We recommend quarterly reviews for active projects and annual reviews for stable infrastructure. Include a last-updated timestamp in your documents:
documentation_meta:
version: "1.2"
last_updated: "2026-03-10"
next_review: "2026-06-10"
maintained_by: platform-team@example.com
Step 5 - Transition Checklist
When actual handover occurs, use this checklist to ensure nothing is missed:
- All SSH keys transferred and tested
- MFA devices or backup codes handed over
- Password manager access confirmed
- SSH config files reviewed and updated
- Jump host access verified
- All servers accessible from new keys
- Documentation reviewed for accuracy
- Emergency contacts updated
- Previous access revoked (where applicable)
- Sign-off from both parties
Troubleshooting
Configuration changes not taking effect
Restart the relevant service or application after making changes. Some settings require a full system reboot. Verify the configuration file path is correct and the syntax is valid.
Permission denied errors
Run the command with sudo for system-level operations, or check that your user account has the necessary permissions. On macOS, you may need to grant terminal access in System Settings > Privacy & Security.
Connection or network-related failures
Check your internet connection and firewall settings. If using a VPN, try disconnecting temporarily to isolate the issue. Verify that the target server or service is accessible from your network.
Frequently Asked Questions
How long does it take to prepare ssh key and server access documentation?
For a straightforward setup, expect 30 minutes to 2 hours depending on your familiarity with the tools involved. Complex configurations with custom requirements may take longer. Having your credentials and environment ready before starting saves significant time.
What are the most common mistakes to avoid?
The most frequent issues are skipping prerequisite steps, using outdated package versions, and not reading error messages carefully. Follow the steps in order, verify each one works before moving on, and check the official documentation if something behaves unexpectedly.
Do I need prior experience to follow this guide?
Basic familiarity with the relevant tools and command line is helpful but not strictly required. Each step is explained with context. If you get stuck, the official documentation for each tool covers fundamentals that may fill in knowledge gaps.
Is this approach secure enough for production?
The patterns shown here follow standard practices, but production deployments need additional hardening. Add rate limiting, input validation, proper secret management, and monitoring before going live. Consider a security review if your application handles sensitive user data.
Where can I get help if I run into issues?
Start with the official documentation for each tool mentioned. Stack Overflow and GitHub Issues are good next steps for specific error messages. Community forums and Discord servers for the relevant tools often have active members who can help with setup problems.
Related Articles
- How To Prepare Pgp Key Revocation Certificate For Publicatio
- How to Set Up a Password Manager for Home Server SSH Keys
- SSH Server Hardening Config Guide
- How To Configure Openpgp Key Server For Organization Interna
- OpenVPN Access Server vs Community Edition
- AI Coding Assistant Session Data Lifecycle
Built by theluckystrike. More at zovo.one