我需要限制某些用户(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