首先需要生成SSH密钥和公钥,这个步骤即可在客户端完成,也可以在服务端完成,在这里我们直接在服务端完成。
使用以下命令生成SSH密钥和公钥:
ssh-keygen -t rsa
根据提示选择保存的位置、设置密码生就会成功生成并显示最终的结果。
如果对安全强度有要求,可使用相应的参数:
1 -t rsa:指定密钥算法 RSA。 2 -b 4096:指定密钥的位数是4096位。安全性要求不高的场合,这个值可以小一点,但是不应小于1024。 3 -f ~/.ssh/user_ca:指定生成密钥的位置和文件名。 4 -C user_ca:指定密钥的识别字符串,相当于注释,可以随意设置。
例如,我们可使用一些参数:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/user_ca -C user_ca
接下来我们需要将公钥添加到 ~/.ssh/authorized_keys 文件中,你可以使用vi完成,也可以直接cat追加:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
配置sshd_config文件,可以使用vi命令
vi /etc/ssh/sshd_config
修改以下项目:
PubkeyAuthentication yes #允许公钥认证 AuthorizedKeysFile ~/.ssh/authorized_keys #指定包含用于用户身份验证的公钥的文件 #可以根据需要决定是否禁用root账户登录 PermitRootLogin no #选项前面可以加#号注释掉,同样会禁用root用户 #可以根据需要决定是否禁用密码登录 PasswordAuthentication no #选项前面可以加#号注释掉,同样会禁用密码登录
配置完比后重启一下ssh服务,使之生效:
systemctl restart sshd.service
最后将密钥文件下载到客户端 ~/.ssh/id_rsa
接下来尝试用证书登录吧。