Linux PAM: SSH key + 2FA (google authenticator) + password - Specify auth requirements per userPublic-Key -or- Password & Google Authenticator for SSH LoginTrying to get SSH with public key (no password) + google authenticator working on Ubuntu 14.04.1PAM, RADIUS, Google Authenticator and Two Factor AuthSSH Authentication using RADIUS + Google AuthenticatorHow to enable Google Authenticator over sshd when already using public key?OpenSSH use (public key or password) + google authenticatorGoogle Authenticator PAM on SSH blocks root login without 2FAGoogle-authenticator with openvpn - AUTH: Received control message: AUTH_FAILEDIs the configuration I want possible? Problems with SSH to Redhat server using google authentication 2faRequire SSH key + Google Authenticator for one account, SSH key only for another
How to deceive the MC
Why was this character made Grand Maester?
Quantum corrections to geometry
Alexandrov's generalization of Cauchy's rigidity theorem
Is keeping the forking link on a true fork necessary (Github/GPL)?
Why do testers need root cause analysis?
Split into three!
Why isn't Tyrion mentioned in 'A song of Ice and Fire'?
Have any humans orbited the Earth in anything other than a prograde orbit?
Why is this integration method not valid?
Toxic, harassing lab environment
Why A=2 and B=1 in the call signs for Spirit and Opportunity?
Moons and messages
To exponential digit growth and beyond!
Knight's Tour on a 7x7 Board starting from D5
What is the limit to a Glyph of Warding's trigger?
Time complexity of an algorithm: Is it important to state the base of the logarithm?
Did significant numbers of Japanese officers escape prosecution during the Tokyo Trials?
What did the 'turbo' button actually do?
Did Game of Thrones end the way that George RR Martin intended?
Could a rotating ring space station have a bolo-like extension?
How to teach an undergraduate course without having taken that course formally before?
Complications of displaced core material?
The disk image is 497GB smaller than the target device
Linux PAM: SSH key + 2FA (google authenticator) + password - Specify auth requirements per user
Public-Key -or- Password & Google Authenticator for SSH LoginTrying to get SSH with public key (no password) + google authenticator working on Ubuntu 14.04.1PAM, RADIUS, Google Authenticator and Two Factor AuthSSH Authentication using RADIUS + Google AuthenticatorHow to enable Google Authenticator over sshd when already using public key?OpenSSH use (public key or password) + google authenticatorGoogle Authenticator PAM on SSH blocks root login without 2FAGoogle-authenticator with openvpn - AUTH: Received control message: AUTH_FAILEDIs the configuration I want possible? Problems with SSH to Redhat server using google authentication 2faRequire SSH key + Google Authenticator for one account, SSH key only for another
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have installed and configured PAM on my Ubuntu server which is working correctly. To log in I want to require an SSH Key to be installed, a password to be provided and a valid code from an authenticator app.
The issue that I have is that I would like to add exceptions to these requirements on a per-user basis.
For example, I want to enforce all of these auth methods for my user account, but specify another user (git - for my GitLab installation) to be accessed by SSH key only (no password or 2FA code required) so the push and pull behaviour works.
The only way I have found to get round this at the moment is to set auth required pam_google_authenticator.so nullok
in the /etc/pam.d/sshd file, so the 2FA part is optional, as well as commenting out the @include common-auth
line. This however means that while the 2FA part works, I am no longer asked for my password on my main account.
I have tried to do the following:
auth [success=1 default=ignore] pam_succeed_if.so user in git
@include common-auth
but this doesnt seem to work.
What do I need to do to enable all of the above auth methods by default, but add exceptions for specific user accounts like git
etc?
ubuntu ssh bash pam google-authenticator
add a comment |
I have installed and configured PAM on my Ubuntu server which is working correctly. To log in I want to require an SSH Key to be installed, a password to be provided and a valid code from an authenticator app.
The issue that I have is that I would like to add exceptions to these requirements on a per-user basis.
For example, I want to enforce all of these auth methods for my user account, but specify another user (git - for my GitLab installation) to be accessed by SSH key only (no password or 2FA code required) so the push and pull behaviour works.
The only way I have found to get round this at the moment is to set auth required pam_google_authenticator.so nullok
in the /etc/pam.d/sshd file, so the 2FA part is optional, as well as commenting out the @include common-auth
line. This however means that while the 2FA part works, I am no longer asked for my password on my main account.
I have tried to do the following:
auth [success=1 default=ignore] pam_succeed_if.so user in git
@include common-auth
but this doesnt seem to work.
What do I need to do to enable all of the above auth methods by default, but add exceptions for specific user accounts like git
etc?
ubuntu ssh bash pam google-authenticator
add a comment |
I have installed and configured PAM on my Ubuntu server which is working correctly. To log in I want to require an SSH Key to be installed, a password to be provided and a valid code from an authenticator app.
The issue that I have is that I would like to add exceptions to these requirements on a per-user basis.
For example, I want to enforce all of these auth methods for my user account, but specify another user (git - for my GitLab installation) to be accessed by SSH key only (no password or 2FA code required) so the push and pull behaviour works.
The only way I have found to get round this at the moment is to set auth required pam_google_authenticator.so nullok
in the /etc/pam.d/sshd file, so the 2FA part is optional, as well as commenting out the @include common-auth
line. This however means that while the 2FA part works, I am no longer asked for my password on my main account.
I have tried to do the following:
auth [success=1 default=ignore] pam_succeed_if.so user in git
@include common-auth
but this doesnt seem to work.
What do I need to do to enable all of the above auth methods by default, but add exceptions for specific user accounts like git
etc?
ubuntu ssh bash pam google-authenticator
I have installed and configured PAM on my Ubuntu server which is working correctly. To log in I want to require an SSH Key to be installed, a password to be provided and a valid code from an authenticator app.
The issue that I have is that I would like to add exceptions to these requirements on a per-user basis.
For example, I want to enforce all of these auth methods for my user account, but specify another user (git - for my GitLab installation) to be accessed by SSH key only (no password or 2FA code required) so the push and pull behaviour works.
The only way I have found to get round this at the moment is to set auth required pam_google_authenticator.so nullok
in the /etc/pam.d/sshd file, so the 2FA part is optional, as well as commenting out the @include common-auth
line. This however means that while the 2FA part works, I am no longer asked for my password on my main account.
I have tried to do the following:
auth [success=1 default=ignore] pam_succeed_if.so user in git
@include common-auth
but this doesnt seem to work.
What do I need to do to enable all of the above auth methods by default, but add exceptions for specific user accounts like git
etc?
ubuntu ssh bash pam google-authenticator
ubuntu ssh bash pam google-authenticator
asked May 9 at 7:27
Ben TurnerBen Turner
1063
1063
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Let's break down these requirements a bit.
Configuring SSH
First, in order to require public keys and password to provide, you need to modify your /etc/ssh/sshd_config
by adding this line:
AuthenticationMethods publickey,keyboard-interactive
This way, everyone must have a public key, and must be able to provide their password upon login.
To make exceptions, use the Match
block. For example, let's assume that users who aren't restricted are in the come-as-please
group. Then add these line to the end of the sshd_config
file:
Match Group come-as-please
AuthenticationMethods publickey keyboard-interactive
Note the absence of the comma, which means that members of the group may use either public key, or keyboard-interactive (password) authentication.
Configuring google-authenticator
To use google authenticator module, you meed to modify the /etc/pam.d/sshd
file. After the
@include common-auth
line, add this one:
auth required pam_google_authenticator.so nullok
Also, in order to enable two-factor authentication, you need to modify your /etc/ssh/sshd_config
file, adding this line:
ChallengeResponseAuthentication yes
After this, restart the SSH daemon.
Setting user access
After the above modifications, you have the following access settings:
- Every user must have a public key installed, and must supply a password.
- If there is a
.google_authenticator
file in the user's home directory, then they must supply the corresponding authenticator code as well. - Anyone who is member of the
come-as-please
group:- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
.google_authenticator
file in their home or not, - If they don't have a public key installed, they need to specify a password. They need to supply the authenticator code if the
.google_authenticator
file exists in their home directory.
- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "2"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f966516%2flinux-pam-ssh-key-2fa-google-authenticator-password-specify-auth-requir%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Let's break down these requirements a bit.
Configuring SSH
First, in order to require public keys and password to provide, you need to modify your /etc/ssh/sshd_config
by adding this line:
AuthenticationMethods publickey,keyboard-interactive
This way, everyone must have a public key, and must be able to provide their password upon login.
To make exceptions, use the Match
block. For example, let's assume that users who aren't restricted are in the come-as-please
group. Then add these line to the end of the sshd_config
file:
Match Group come-as-please
AuthenticationMethods publickey keyboard-interactive
Note the absence of the comma, which means that members of the group may use either public key, or keyboard-interactive (password) authentication.
Configuring google-authenticator
To use google authenticator module, you meed to modify the /etc/pam.d/sshd
file. After the
@include common-auth
line, add this one:
auth required pam_google_authenticator.so nullok
Also, in order to enable two-factor authentication, you need to modify your /etc/ssh/sshd_config
file, adding this line:
ChallengeResponseAuthentication yes
After this, restart the SSH daemon.
Setting user access
After the above modifications, you have the following access settings:
- Every user must have a public key installed, and must supply a password.
- If there is a
.google_authenticator
file in the user's home directory, then they must supply the corresponding authenticator code as well. - Anyone who is member of the
come-as-please
group:- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
.google_authenticator
file in their home or not, - If they don't have a public key installed, they need to specify a password. They need to supply the authenticator code if the
.google_authenticator
file exists in their home directory.
- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
add a comment |
Let's break down these requirements a bit.
Configuring SSH
First, in order to require public keys and password to provide, you need to modify your /etc/ssh/sshd_config
by adding this line:
AuthenticationMethods publickey,keyboard-interactive
This way, everyone must have a public key, and must be able to provide their password upon login.
To make exceptions, use the Match
block. For example, let's assume that users who aren't restricted are in the come-as-please
group. Then add these line to the end of the sshd_config
file:
Match Group come-as-please
AuthenticationMethods publickey keyboard-interactive
Note the absence of the comma, which means that members of the group may use either public key, or keyboard-interactive (password) authentication.
Configuring google-authenticator
To use google authenticator module, you meed to modify the /etc/pam.d/sshd
file. After the
@include common-auth
line, add this one:
auth required pam_google_authenticator.so nullok
Also, in order to enable two-factor authentication, you need to modify your /etc/ssh/sshd_config
file, adding this line:
ChallengeResponseAuthentication yes
After this, restart the SSH daemon.
Setting user access
After the above modifications, you have the following access settings:
- Every user must have a public key installed, and must supply a password.
- If there is a
.google_authenticator
file in the user's home directory, then they must supply the corresponding authenticator code as well. - Anyone who is member of the
come-as-please
group:- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
.google_authenticator
file in their home or not, - If they don't have a public key installed, they need to specify a password. They need to supply the authenticator code if the
.google_authenticator
file exists in their home directory.
- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
add a comment |
Let's break down these requirements a bit.
Configuring SSH
First, in order to require public keys and password to provide, you need to modify your /etc/ssh/sshd_config
by adding this line:
AuthenticationMethods publickey,keyboard-interactive
This way, everyone must have a public key, and must be able to provide their password upon login.
To make exceptions, use the Match
block. For example, let's assume that users who aren't restricted are in the come-as-please
group. Then add these line to the end of the sshd_config
file:
Match Group come-as-please
AuthenticationMethods publickey keyboard-interactive
Note the absence of the comma, which means that members of the group may use either public key, or keyboard-interactive (password) authentication.
Configuring google-authenticator
To use google authenticator module, you meed to modify the /etc/pam.d/sshd
file. After the
@include common-auth
line, add this one:
auth required pam_google_authenticator.so nullok
Also, in order to enable two-factor authentication, you need to modify your /etc/ssh/sshd_config
file, adding this line:
ChallengeResponseAuthentication yes
After this, restart the SSH daemon.
Setting user access
After the above modifications, you have the following access settings:
- Every user must have a public key installed, and must supply a password.
- If there is a
.google_authenticator
file in the user's home directory, then they must supply the corresponding authenticator code as well. - Anyone who is member of the
come-as-please
group:- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
.google_authenticator
file in their home or not, - If they don't have a public key installed, they need to specify a password. They need to supply the authenticator code if the
.google_authenticator
file exists in their home directory.
- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
Let's break down these requirements a bit.
Configuring SSH
First, in order to require public keys and password to provide, you need to modify your /etc/ssh/sshd_config
by adding this line:
AuthenticationMethods publickey,keyboard-interactive
This way, everyone must have a public key, and must be able to provide their password upon login.
To make exceptions, use the Match
block. For example, let's assume that users who aren't restricted are in the come-as-please
group. Then add these line to the end of the sshd_config
file:
Match Group come-as-please
AuthenticationMethods publickey keyboard-interactive
Note the absence of the comma, which means that members of the group may use either public key, or keyboard-interactive (password) authentication.
Configuring google-authenticator
To use google authenticator module, you meed to modify the /etc/pam.d/sshd
file. After the
@include common-auth
line, add this one:
auth required pam_google_authenticator.so nullok
Also, in order to enable two-factor authentication, you need to modify your /etc/ssh/sshd_config
file, adding this line:
ChallengeResponseAuthentication yes
After this, restart the SSH daemon.
Setting user access
After the above modifications, you have the following access settings:
- Every user must have a public key installed, and must supply a password.
- If there is a
.google_authenticator
file in the user's home directory, then they must supply the corresponding authenticator code as well. - Anyone who is member of the
come-as-please
group:- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
.google_authenticator
file in their home or not, - If they don't have a public key installed, they need to specify a password. They need to supply the authenticator code if the
.google_authenticator
file exists in their home directory.
- If they have a public key installed, they do not need to supply a password or the authenticator code, whether they have the
answered May 9 at 10:33
LacekLacek
2,2481116
2,2481116
add a comment |
add a comment |
Thanks for contributing an answer to Server Fault!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f966516%2flinux-pam-ssh-key-2fa-google-authenticator-password-specify-auth-requir%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown