CentOS设置证书登录并禁止密码登录

CentOS设置证书登录并禁止密码登录

普通用户登录时,以往的做法往往是使用账号密码登录,但是这样的登录方式风险相当高,使用密钥登录能大大降低风险

1. 生成密钥

ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,ssh-keygen 可用来生成ssh公钥认证所需的公钥和私钥文件。使用 ssh-keygen 时,请先进入到 ~/.ssh 目录,不存在的话,请先创建。并且保证 ~/.ssh 以及所有父目录的权限不能大于 711。使用 ssh-kengen 会在~/.ssh/目录下生成两个文件,不指定文件名和密钥类型的时候,默认生成的两个文件是
id_rsa和id_rsa.pub,id_rsa是私钥文件,id_rsa.pub是公钥文件。生成ssh key的时候,可以通过 -f 选项指定生成文件的文件名,-C指定备注。

ssh-keygen -t rsa -b 4096 -f test -C "test key"

如果没有指定文件名,会询问你输入文件名

Generating public/private rsa key pair.Enter file in which to save the key (/home/huqiu/.ssh/id_rsa):

之后,会询问你是否需要输入密码。输入密码之后,以后每次都要输入密码。请根据你的安全需要决定是否需要密码,如果不需要,直接回车

Generating public/private rsa key pair.Enter passphrase (empty for no passphrase):

为了让私钥文件和公钥文件能够在认证中起作用,请确保权限正确。
对于.ssh 以及父文件夹,当前用户用户一定要有执行权限,其他用户最多只能有执行权限。
对于公钥和私钥文件也是: 当前用户一定要有执行权限,其他用户最多只能有执行权限

2. 将公钥copy到目标机器的~/.ssh目录下

scp ~/.ssh/<公钥文件>.pub root@<目标机器IP>:~/.ssh/<公钥文件>.pub# 例子:# scp ~/.ssh/nighthawk.pub root@192.168.31.15:~/.ssh/nighthawk.pub

3. 将公钥设置为该服务器的登录公钥

cat ~/.ssh/<公钥文件>.pub >> ~/.ssh/authorized_keys# 例子:# cat ~/.ssh/nighthawk.pub >> ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys

4. 关闭selinux

vim /etc/selinux/config# 将SELINUX=enforcing改为SELINUX=disabled

5. 禁止密码登录,改用私钥登录

vim /etc/ssh/sshd_config#禁用root账户登录,如果是用root用户登录请开启PermitRootLogin yes# 是否让 sshd 去检查用户家目录或相关档案的权限数据,# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入StrictModes no# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile      .ssh/authorized_keys# 有了证书登录了,就禁用密码登录吧,安全要紧PasswordAuthentication no

6. 重启服务

CentOS7:
systemctl restart sshd
CentOS6:
service sshd restart


作者头像
萧萧一风创始人

做一个积极主动热情的人,为了想要完成的事情和实现的目标,拼命投入力量。

上一篇:mariadb 10.4.11 数据库初始化错误:Installing MariaDB/MySQL system tables in '/data/db/' ...
下一篇:Nginx解决https加载不了http资源问题

发表评论