在Linux上如何禁止ssh使用密码登录

时间:2019-11-20 08:53:49  来源:igfitidea点击:

在CentOS/RHEL/Fedora/Debian中,如何禁止SSH客户端使用密码登录?
在Linux操作系统上如何禁用SSH密码身份验证?
如何设置SSH只能使用密钥登录?

创建新的用户

创建一个新用户Hyman

# useradd -m -s /bin/bash Hyman

使用passwd命令设置用户密码:

# passwd Hyman

将用户添加到sudo(Ubuntu/Debian)组。
如果使用的是CentOS/RHEL/Fedora Linux,则将用户添加到wheel组:

# usermod -aG sudo Hyman

在RHEL/CentOS Linux,执行:

# usermod -aG wheel Hyman

使用id命令检查:

# su - Hyman
$ id Hyman

如果使用现有用户,则直接添加到sudo或wheel组。

# usermod -aG sudo userNameHere #Debian/Ubuntu
# usermod -aG wheel userNameHere #CentOS/RHEL

在服务器上安装ssh密钥

在本地系统创建创建密钥对:

$ ssh-keygen -t rsa

在远程服务器上安装公钥:

$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]

测试使用ssh密钥库登录:

$ ssh [email protected]

禁止使用密码登录服务器

编辑/etc/ssh/sshd_config文件,输入:

$ sudo vi /etc/ssh/sshd_config

查找ChallengeResponseAuthentication并将其设置为no:

ChallengeResponseAuthentication no

将PasswordAuthentication也设置为no

PasswordAuthentication no

搜索UsePAM并将其也设置为no:

UsePAM no

最后查找PermitRootLogin并设置为no:

PermitRootLogin no

重启ssh服务器或者重新加载:

# /etc/init.d/ssh reload

在基于systemd的Linux发行版中,使用systemctl命令重启ssh服务或重新加载:

$ sudo systemctl reload ssh

在RHEL/CentOS Linux上重新加载ssh

# /etc/init.d/sshd reload

测试

尝试以root用户身份登录:

$ ssh [email protected]

尝试使用密码登录:

$ ssh [email protected] -o PubkeyAuthentication=no