1. 生成密钥
    使用需要生成密钥的用户登录后键入。
ssh-keygen -t rsa

直接回车会在~/.ssh目录(用户所在家目录下的.ssh目录,如果没有请自行创建.ssh目录)生成id_rsa, id_rsa.pub文件 第一个是私有密钥 第二个是公共密钥。如果输入内容会在当前目录创建你输入内容为名称的私钥公钥。这里直接回车。
然后输入密钥密码,再次输入密码(也可以不要密码直接回车)。生成密钥完成。

将用户.ssh目录内的两个密钥下载到本地。(我用的是win客户端ftp方式下载)

  1. 配置ssh使用密钥(一定先下载下来再去修改配置)
    将.ssh中的id_rsa.pub复制并改名字为authorized_keys
cd .ssh
cp id_rsa.pub authorized_keys

修改authorized_keys权限为700(必须修改为700,不能为其他)

chmod 700 authorized_keys

修改sshd_config文件

vim /etc/ssh/sshd_config

参考如下修改,如果前面有# 去除

StrictModes no  
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys      #ssh文件位置
PasswordAuthentication yes                        #使用密码  no为不使用密码
AuthenticationMethods publickey,password          #如果密码和密钥都使用在末尾加上此行代码

重启ssh服务

systemctl restart sshd.service
RSAAuthentication yes # 开启密钥登入的认证方式

PubkeyAuthentication yes # 开启密钥登入的认证方式

PermitRootLogin yes #此处请留意 root 用户能否通过 SSH 登录,默认为yes:

PasswordAuthentication yes #当我们完成全部设置并以密钥方式登录成功后,可以禁用密码登录。这里我们先不禁用,先允许密码登陆

禁用root账户登录,非必要,但为了安全性,请配置

PermitRootLogin no

是否让 sshd 去检查用户家目录或相关档案的权限数据,
这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入

    StrictModes no

是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

有了证书登录了,就禁用密码登录吧,安全要紧

PasswordAuthentication no

列子:

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords yes
PasswordAuthentication no