9

I have adapted my sshd_config file where I changed the value of:

  • PasswordAuthentication no
  • ChallengeResponseAuthentication no
  • usePAM no ( now set to yes)

Furthermore I have restarted the sshd service by executing: sudo service ssh restart. I have also done a reboot.

I am still allowed to login with a user password. Any idea what I have been missing?

# Package generated configuration file
# See the sshd_config(5) manpage for details

What ports, IPs and protocols we listen for

Port 22

Use these options to restrict which interfaces/protocols sshd will bind to

#ListenAddress :: #ListenAddress 0.0.0.0 Protocol 2

HostKeys for protocol version 2

HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key #Privilege Separation is turned on for security UsePrivilegeSeparation yes

Lifetime and size of ephemeral version 1 server key

KeyRegenerationInterval 3600 ServerKeyBits 768

Logging

SyslogFacility AUTH LogLevel INFO

Authentication:

LoginGraceTime 120 PermitRootLogin yes StrictModes yes

RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys

Don't read the user's ~/.rhosts and ~/.shosts files

IgnoreRhosts yes

For this to work you will also need host keys in /etc/ssh_known_hosts

RhostsRSAAuthentication no

similar for protocol version 2

HostbasedAuthentication no

Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication

#IgnoreUserKnownHosts yes

To enable empty passwords, change to yes (NOT RECOMMENDED)

PermitEmptyPasswords no

Change to yes to enable challenge-response passwords (beware issues with

some PAM modules and threads)

ChallengeResponseAuthentication no

Change to no to disable tunnelled clear text passwords

PasswordAuthentication no

Kerberos options

#KerberosAuthentication no #KerberosGetAFSToken no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes

GSSAPI options

#GSSAPIAuthentication no #GSSAPICleanupCredentials yes

X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes #UseLogin no

#MaxStartups 10:30:60 #Banner /etc/issue.net

Allow client to pass locale environment variables

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

Set this to 'yes' to enable PAM authentication, account processing,

and session processing. If this is enabled, PAM authentication will

be allowed through the ChallengeResponseAuthentication and

PasswordAuthentication. Depending on your PAM configuration,

PAM authentication via ChallengeResponseAuthentication may bypass

the setting of "PermitRootLogin without-password".

If you just want the PAM account and session checks to run without

PAM authentication, then enable this but set PasswordAuthentication

and ChallengeResponseAuthentication to 'no'.

UsePAM no

EDIT:

  • PermitRootLogin is now set to no.
  • usePAM is now set to yes.

Still not working though.

3 Answers3

8

You need to do three things here:

(1) Set PermitRootLogin to be without-password or restrict-password or no. For security. I normally set it to no.

(2) You're missing something else that's pretty important. You should be using PAM for authentication for things - UsePAM yes is what the default usually is; this allows you to use UNIX user login data.

(3) Also important, NORMALLY you set ChallengeResponseAuthentication to no. This protects from bypassing the without-password restriction for root logon. (The exception is if you're using libpam-duo and the Duo Security 2FA system, in which case you need ChallengeResponseAuthentication set to yes, but this isn't a typical setup.)

Once you've done that, sudo service ssh restart to restart the SSH service with the new configuration. Attempt SSH from another window before you logout of your SSH session to make sure things are working as expected.

Thomas Ward
  • 74,764
  • PermitRootLogin is now set to no. UsePAM is now set to yes ChallengeResponseAuthentication is still set to no. I have restarted the service but still to no avail. – Mattias De Charleroy Jun 05 '17 at 12:06
1

I followed Thomas' steps but still didn't work. Turns out I just needed to set UsePAM to no and it now disallows login without a public key.

Nikaoto
  • 111
0

This disallows password logins for me:

$ sudo vi /etc/ssh/sshd_config
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM yes

Then

$ sudo systemctl restart sshd
jpsecher
  • 105