每个用户的SSHd限制

我需要限制某些用户(s),以便他们只能SSH使用SSH密钥和其他用户可以使用密钥或密码login。

一个例子:

我希望root用户能够使用密钥远程(通过sshd)login,所以不会接受密码(即使密码正确)

对于其他用户(系统中的每个人),他们可以使用密钥和/或密码login

我该怎么做?

我会做的是设置/etc/sshd/sshd_config ,使:

 PermitRootLogin without-password 

只是为了获得额外的安全性,并避免lockingroot密码(只允许root用户使用密钥login)

我将使用AllowGroups而不是AllowUser ,因为对于我来说,将用户添加到组而不是sshd_config会更方便,但这可能取决于您的个人偏好。

我想你想要的是“匹配用户”。 您使用它来匹配用户名,然后缩进专门应用于该用户的一系列configuration设置。

 Match User Joe PasswordAuthentication no Match User Jane PasswordAuthentication yes 

我使用它来为客户端设置有时只有SFTP的访问。

设置ssh如下:

 nano /etc/ssh/sshd_config AllowUsers username1 username2 username3 

重新启动SSH

然后将密钥提供给那些你想避免使用密码的人。

ssh-keygen用于为您生成密钥对。 这是一个你自己的个人私钥/公钥对创build的会话:

 #ssh-keygen -t rsa 

命令ssh-keygen -t rsa启动了密钥对的创build。

我没有为我的设置input密码(而是按下了Enter键)。

私钥保存在.ssh / id_rsa中。 这个文件是只读的,只为你。 没有其他人必须看到该文件的内容,因为它用于解密用公钥encryption的所有通信。

公钥保存在.ssh / id_rsa.pub中。

然后将其内容复制到希望进行SSH连接的系统的.ssh / authorized_keys文件中,而不需要提示input密码。

 #scp id_rsa.pub remote system:~/.ssh/authorized_keys 

最后locking帐户(密钥authentication仍然可行。)

 # passwd -l username1