UMIACS will soon be rolling out multi-factor authentication requirements when using SSH to connect to our public-facing hosts to provide better account security. Public-facing hosts are hosts that are reachable without first establishing a connection to our VPN. If you first connect to our VPN, you will not need to additionally multi-factor authenticate when using SSH. This is because our VPN already requires multi-factor authentication to establish a connection.
SSH has two different authentication methods that we currently support on all of our internal hosts: interactive password authentication and public key authentication. Multi-factor authentication-enabled SSH on our public-facing hosts will only support interactive password authentication, with the secondary factor coming from our Duo instance. We do not currently support public key based authentication and Duo multi-factor authentication on our public-facing hosts.
The initial command or session setup for connecting to a host with multi-factor authentication enabled over SSH is the same as one that does not have it enabled. Our example for connecting to a host over SSH can be found here.
Once you enter the command (if using a native terminal) or start the session (PuTTY or other terminal emulators), you will be presented with the following prompt:
Enter your UMIACS password here (the same as if you were using interactive password authentication to connect to an internal host). After correctly entering your password, you will be taken to the following prompt:
Password: Duo two-factor login for mbaney Enter a passcode or select one of the following options: 1. Duo Push to XXX-XXX-1234 2. Phone call to XXX-XXX-1234 3. SMS passcodes to XXX-XXX-1234 Passcode or option (1-3):
(the last 4 digits shown will be replaced with the last 4 digits of the phone number you have registered with our Duo instance)
The three numbered options here correspond to three different actions that Duo can take to authenticate you, and are identical to the options that would be presented to you via a GUI if you were attempting to sign into another of our multi-factor authentication secured services, such as our Directory application:
- Option 1 will send a push notification to the Duo app on your registered phone for you to accept to proceed.
Passcode or option (1-3): 1 Pushed a login request to your device...
- Option 2 will call your registered phone and ask you to press any key on your phone to proceed.
Passcode or option (1-3): 2 Calling your phone... Dialing XXX-XXX-1234...
Answered. Press any key on your phone to log in.
- Option 3 will send a one time passcode to your registered phone via SMS and then redisplay the prompt. Type the passcode received at the new prompt (which will show the first number of the passcode sent as a hint) to proceed.
Passcode or option (1-3): 3 New SMS passcodes sent. Duo two-factor login for mbaney Enter a passcode or select one of the following options: 1. Duo Push to XXX-XXX-1234 2. Phone call to XXX-XXX-1234 3. SMS passcodes to XXX-XXX-1234 (next code starts with: 1) Passcode or option (1-3): 1234567
After finishing your method of choice for using Duo to multi-factor authenticate, you will be logged in and can operate as normal.
Success. Logging you in... Last login: Wed Feb 17 12:00:00 2021 from ... [mbaney@opensub02 ~]$
Since there will now be an additional step to log in to our public-facing hosts if not using our VPN, we would recommend first establishing a connection over our VPN if you anticipate needing to SSH to several different hosts or need to open several different terminal windows concurrently. As mentioned previously, you will not need to additionally multi-factor authenticate when using SSH if you first connect to our VPN since it is already secured by multi-factor authentication.
An alternative would be to use a terminal multiplexer such as Screen (on RHEL7) or Tmux (on RHEL8+, also available in our module tree on RHEL7) to minimize the number of times you need to multi-factor authenticate. Terminal multiplexers allow you to start several different processes out of one terminal display, and also detach from and later reattach to each of the processes.