One-Time SSH Passwords
The One-Time SSH Password (OTP) SSH secrets engine type allows a Vault server to issue a One-Time Password every time a client wants to SSH into a remote host using a helper command on the remote host to perform verification.
An authenticated client requests credentials from the Vault server and, if authorized, is issued an OTP. When the client establishes an SSH connection to the desired remote host, the OTP used during SSH authentication is received by the Vault helper, which then validates the OTP with the Vault server. The Vault server then deletes this OTP, ensuring that it is only used once.
Since the Vault server is contacted during SSH connection establishment, every login attempt and the correlating Vault lease information is logged to the audit secrets engine.
See Vault-SSH-Helper for details on the helper.
This page will show a quick start for this secrets engine. For detailed
documentation on every path, use vault path-help
after mounting the secrets
engine.
Drawbacks
The main concern with the OTP secrets engine type is the remote host's connection to Vault; if compromised, an attacker could spoof the Vault server returning a successful request. This risk can be mitigated by using TLS for the connection to Vault and checking certificate validity; future enhancements to this secrets engine may allow for extra security on top of what TLS provides.
Mount the secrets engine
Create a Role
Create a role with the key_type
parameter set to otp
. All of the machines
represented by the role's CIDR list should have helper properly installed and
configured.
Create a Credential
Create an OTP credential for an IP of the remote host that belongs to
otp_key_role
.
Establish an SSH session
Automate it!
A single CLI command can be used to create a new OTP and invoke SSH with the correct parameters to connect to the host.
The OTP will be entered automatically using sshpass
if it is installed.
Note: sshpass
cannot handle host key checking. Host key checking can be
disabled by setting -strict-host-key-checking=no
.
Learn
Refer to the SSH Secrets Engine: One-Time SSH Password guide for a step-by-step tutorial.
API
The SSH secrets engine has a full HTTP API. Please see the SSH secrets engine API for more details.