Use Ed25519 as the default, generate the pair with ssh-keygen, protect the private key with a strong passphrase, and copy only the public key to the server or service that needs it. Keep the private key on the local machine, store keys in the standard .ssh directory, and avoid shared keys so access remains traceable and easier to revoke.
Why SSH Key Hygiene Matters for Routine Admin Work
Everyday administrative SSH access is a control plane, not just a login method. The key pair becomes the durable trust anchor for repeated privileged sessions, so small mistakes, like reusing the same key everywhere or letting private keys drift off a protected workstation, quickly widen blast radius and slow revocation. That is why common guidance emphasises traceability, local custody, and simple rotation paths.
For teams standardising this access pattern, the practical baseline is to keep one private key per person or administrator context, use it only from a controlled local device, and distribute only the public half to the target host or service. That keeps the authentication path clear and makes access review and removal much more reliable than shared or copied credentials.
- Generate a fresh pair for admin use instead of repurposing an older key from another system.
- Store the private key in the user’s standard
.sshdirectory and protect it with a strong passphrase. - Copy only the public key to the host that must trust it, and remove it when access ends.
- Avoid shared keys so a single person or team change does not create hidden access elsewhere.
One useful operating rule is that if the key cannot be tied back to a named owner and a specific administrative purpose, it is already too loose for routine privileged access.
What Good SSH Key Setup Looks Like in Practice
Ed25519 is the sensible default for most modern administrative access because it gives strong security with a compact key size and fast verification. In practice, the key generation step should be simple and repeatable, so teams can teach it once and then enforce it consistently across workstations, jump hosts, and service-managed admin paths.
The important decision is not just which algorithm to choose, but how the key is handled after generation. The private key should remain on the local machine, never copied into shared drives or ad hoc backup locations, and the passphrase should be strong enough that a stolen file is not immediately usable. The public key then becomes the only part that needs to be provisioned to the target.
- Prefer a standard, well-documented
ssh-keygenworkflow so administrators are not inventing their own method. - Keep key files in the normal SSH directory structure so tooling, agents, and audits can find them predictably.
- Use separate keys when the access boundary is different, such as distinct environments or administrative roles.
- Review key placement and ownership during joiner, mover, and leaver processes instead of treating SSH as a one-time setup task.
At scale, the main quality signal is whether access can be removed cleanly without wondering which systems still trust the same private key.
Risk and Threat Considerations
SSH keys are attractive because they are reusable, non-interactive credentials. If the private key is copied, unprotected, or shared across admins, compromise of one workstation or backup can become broad administrative access across many hosts. The risk grows further when keys are long-lived and revocation is manual, because stale trust often outlives the user who created it.
Failure mechanism: The weakest link is usually private-key exposure, passphrase neglect, or uncontrolled duplication of the same key across systems. Once an attacker or unauthorised insider gets the private key, they can authenticate anywhere the public key is still trusted, and shared keys make ownership and investigation far harder.
Impact: A compromised administrative key can enable stealthy persistence, lateral movement, configuration tampering, and rapid privilege abuse. In environments that already struggle with secret governance, this can turn a routine admin convenience into a durable access path that is difficult to detect and revoke.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 address the attack and risk surface, while CIS Controls v8, NIST CSF 2.0 and NIST SP 800-63 set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Non-Human Identity Top 10 | NHI-01 — Secrets and Credential Management | SSH keys are credential material that must be stored and protected like other non-human secrets. |
| NHI-02 — Identity Lifecycle and Offboarding | Separate keys per owner make revocation and offboarding of admin access straightforward. | |
| NHI-03 — Least Privilege and Access Boundaries | Distinct keys for distinct admin contexts reduce blast radius and support traceable access. | |
| Recommendation — Protect SSH private keys with strong passphrases and restrict storage to approved local locations. Issue unique SSH keys per administrator and revoke them immediately when access changes. Scope each SSH key to the minimum administrative boundary required for the role. | ||
| CIS Controls v8 | 6 — Access Control Management | SSH admin access depends on controlling who can authenticate and what access paths remain active. |
| 5 — Account Management | Unique keys and ownership support accountable administrative account management and revocation. | |
| 8 — Audit Log Management | Traceable SSH key use benefits from logging that can attribute administrative access and changes. | |
| Recommendation — Remove unused SSH trust paths and limit each account to the access it needs. Assign and retire SSH access through named accounts rather than shared credentials. Log SSH authentication events so key use can be reviewed and investigated. | ||
| NIST CSF 2.0 | PR.AC — Identity Management, Authentication, and Access Control | SSH keys are an authentication and access-control mechanism for administrative entry. |
| PR.PS — Platform Security | Protecting local private keys and standard key storage is part of secure platform handling. | |
| GV.RM — Risk Management Strategy | Shared or long-lived SSH keys create revocation and accountability risk that should be governed. | |
| Recommendation — Enforce unique authenticated admin access and revoke public keys when trust should end. Harden administrator endpoints so private SSH keys remain protected on the local machine. Set policy for key ownership, lifetime, and revocation so administrative trust stays bounded. | ||
| NIST SP 800-63 | IAL — Identity Assurance Level | Named-key admin access depends on reliable identity binding and lifecycle control for the holder. |
| Recommendation — Bind SSH access to verified administrator identities before issuing reusable keys. | ||
Practitioner Guidance
What to verify: Confirm that each administrator has a distinct key pair, that the private key is stored only on an approved local device, and that the server trusts only the matching public key. If the same key is used across multiple people or environments, treat that as a governance defect, not a convenience.
Common mistake: Teams often focus on algorithm choice and forget the lifecycle. The bigger failure is usually operational, such as leaving old public keys in place, copying private keys between machines, or assuming a passphrase alone compensates for poor key distribution.
Practitioner takeaway: The key setup is only sound when access is both technically secure and operationally attributable, meaning every private key has a clear owner, a bounded use case, and a straightforward path to revoke it.
Related resources from NHI Mgmt Group
- How should security teams replace static SSH keys with short-lived access controls?
- How should security teams implement device-bound SSH access across large server fleets without relying on shared keys?
- How should security teams harden Linux access without relying on static SSH keys?
- How should security teams set up remote desktop access so it stays simple without exposing devices to the public internet?