provides secondary authentication via the Duo authentication service,
executing the user's login shell or command only if successful.
The following options are available:
-c
Specify an alternate configuration file to load.
-h
Specify the IP address from which the user is authenticating.
-f
Specify an alternate Duo user to authenticate as.
If
is installed setuid root (the default), these options are
only available to the super-user.
After successful Duo authentication, the user's login shell is
invoked, or if an alternate
command
or
SSH_ORIGINAL_COMMAND
environment variable is specified, it will be executed via the user's
shell with a -c option.
CONFIGURATION
The INI-format configuration file must have a
``duo
''
section with the following options:
ikey
Duo integration key (required).
skey
Duo secret key (required).
group
Skip Duo authentication for users not in a specific Unix group.
minuid
Skip Duo authentication for users below a specified user ID.
failmode
On service or configuration errors that prevent Duo authentication, fail
``safe
''
(allow access) or
``secure
''
(deny access). Default is
``safe
''
If installed setuid root (the default),
performs Duo authentication as a dedicated privilege separation user,
requiring that the configuration file be owned and readable only by
this user.
EXAMPLES
can be enabled system-wide by specifying its full path as a
ForceCommand
in
sshd_config5
to capture any SSH remote login (including subsystems, remote
commands, and interactive login):
ForceCommand /usr/local/sbin/login_duo
Similarly, a group of administrators could require two-factor
authentication for login to a shared root account by specifying
as the forced command for each public key in
~root/.ssh/authorized_keys
A user without root access could configure their own account to
require Duo authentication via the same
~/.ssh/authorized_keys
forced command mechanism and a user-installed (non-setuid)
.
When used to protect remote SSH access, only interactive sessions
support interactive Duo login. For
scp(1),
sftp(1),
rsync(1),
and other
ssh(1)
remote commands,
automatically tries the user's default out-of-band factor
(smartphone push or voice callback) and disables real-time login
progress reporting to provide a clean shell environment.