服务器: CentOS 7.4
客户端: Xshell 7,putty0.76
1)密码登录:
这对我们来说太熟悉了, 换句话说我们对密码这东西太熟悉了, 几乎随处都会用到. 登录只是密码的一个应用场景之一. 但是密码常见的风险在于, 一是可能泄露, 二是被破解的风险
2)证书登录:
这里说的证书其实就是密钥. 在非对称加密中, 密钥分为公钥和私钥. 私钥, 即密钥所有人持有. 公钥则公布给他人. 公钥和私钥成对使用, 互相解密. 公钥加密数据只能用私钥解密; 私钥加密则只能用公钥解密(验证)
3)证书登录原理:
密钥对生成后, 公钥存储于远程服务器. 登录时远程服务器向客户端发送随机字符串, 客户端以私钥加密后返回服务器, 服务器再以公钥解密. 解密成功则证明客户端合法, 允许登录
4)配置证书登录
4.1. 登录用户:
首先在服务器生成公钥和私钥. 因为密钥与登录用户是对应的, 所以生成的密钥仅对当前用户有效. 本次以testcc用户登录
testcc用户登录, 并且当前路径位于用户的默认home目录下
[root@localhost openssh-8.8p1]# su testcc
4.2. 创建公钥私钥:
[testcc@localhost openssh-8.8p1]$ ssh-keygen -t rsa
ssh-keygen是一个用来生成和管理ssh密钥的工具
-t参数用于指定密钥类型, 或者说加密算法. 本次使用rsa算法. 除此以外还有rsa1, dsa可选
执行命令后会提示输入用于保存密钥对的路径. 默认位于/home/用户/.ssh目录下. 确认无误则直接回车
提示目录已创建, 同时要求输入证书密码. 该密码用于客户端使用证书时验证(要不然把证书文件复制走了岂不可以随便登录了?), 与用户登录密码没有任何关系. 而且也有提示: 不想设密码的话保留为空即可, 不输入任何内容直接回车
然后要求再确认一次. 有密码就重复输入一次, 没有密码当然直接回车确认
密钥生成成功, 并提示保存路径, 以及打印密钥指纹
4.3). 写入公钥
进入证书存储目录
[testcc@localhost openssh-8.8p1]$ cd /home/testcc/.ssh
[testcc@localhost .ssh]$ ls
id_rsa id_rsa.pub
[testcc@localhost .ssh]$ cat ./id_rsa.pub >> ./authorized_keys
[testcc@localhost .ssh]$ ls
authorized_keys id_rsa id_rsa.pub
[testcc@localhost .ssh]$ chmod 600 authorized_keys
[testcc@localhost .ssh]$ cd ..
[testcc@localhost ~]$ chmod -R 700 .ssh
将公钥写入authorized_keys. 目录下多出一个文件authorized_keys
[testcc@localhost .ssh]$ su root
Password:
[root@localhost .ssh]# vim /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#RSAAuthentication yes
opessh7.4已取消此项 !!!看release notes发行说明很重要
PasswordAuthentication 改为yes
AuthenticationMethods publickey,password
重启SSH服务:
[root@localhost .ssh]# systemctl restart sshd
4.4). win下使用putty密钥+密码登录ssh
打开puttygen.exe生成ppk文件
把id_rsa私钥从服务器下载下来
载入刚才下载的私钥(一定先下载下来再去修改配置)
输入生成密钥时输入的密码
保存私钥,选择SSH-2 RSA
打开putty
选择刚才保存的ppk私钥,然后打开
输入该密钥的用户名,密码进行登录
4.5). win下使用xhsell7密钥+密码登录ssh
下载最新的xshell7版本,个人免费版
导入私钥,输入私钥密码
登录成功