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_keys chmod 700 ~/.ssh chmod 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 yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # 有了证书登录了,就禁用密码登录吧,安全要紧 PasswordAuthentication no
6. 重启服务
CentOS7:systemctl restart sshd
CentOS6:service sshd restart
发表评论