一、证书登录步骤
- 客户端生成证书:私钥和公钥,然后私钥放在客户端妥当保管,一般为了安全,客户端在生成私钥时,需要设置一个密码,其他人就算拿到私钥,没有密码也是无法解开的。
- 服务器中添加信任公钥:把客户端生成的公钥,上传到服务器,添加到指定的文件中,修改sshd配置,重启sshd服务。
- 假设客户端想通过私钥登录其他服务器,同理需要上传公钥到服务器,可以使用同一个公钥私钥对,也可以重新生成一对服务器如果要配置多个客户端证书登录,把需要登录的客户端公钥添加到指定的文件中。
- 真实工作中,员工生成好密钥对,公钥发送给运维人员,开通一台或多台服务器的权限,员工有责任保护好私钥,为了防止恶意拷贝,最好设置密码,但我从没设过密码,所以接下来的配置演示也没设置密码。
二、准备工作
2.1、生成用于SSH的公钥和私钥
2.1.1、使用centos系统命令ssh-keygen
# 本例用户为alias
[alias@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/alias/.ssh/id_rsa): 回车
Created directory '/home/alias/.ssh'.
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
Your identification has been saved in /home/alias/.ssh/id_rsa.
Your public key has been saved in /home/alias/.ssh/id_rsa.pub.
The key fingerprint is: 回车
SHA256:aVJ7gDVQ75CSGSVa+Y4UCl6dvHWxbrRFjr1Bq9+wUt8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| o=*= ..o |
| . .o*B.+.B . |
| . o..===.= * |
| . . oo.O + o |
| ..oS B + |
| .o.o o = . |
| . o o E|
| . |
| |
+----[SHA256]-----+
# 会提示输入:密钥存放位置(直接回车,默认在/home/alias/.ssh/目录)、密码短语、重复密码短语,我这里全回车,没有设置密码。
# 完成后在/home/alias/.ssh/目录下生成了2个文件:id_rsa为私钥,id_rsa.pub为公钥。
[alias@localhost ~]$ ls .ssh/
id_rsa id_rsa.pub
2.1.2、使用Secure CRT生成
- 主菜单->工具->创建公钥->选择RSA->填写密码->密钥长度1024->选择格式为OpenSSH及保存路径。【基本上全部点下一页至完成】
- 生产2个文件,默认名为Identity和Identity.pub
- Identity为私钥,Identity.pub为公钥
2.2、导入公钥
[alias@localhost ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
注意事项:
- SecureCRT生成的公钥文件上传到服务器后,再导入
- 多个公钥追加到authorized_keys文件中
- ssh使用哪个账户登录,就把公钥上传到对应账号的home目录下的~
2.3、检查正确的文件和文件夹权限
# 一般默认权限就是以下,其实不用更改
[alias@localhost ~]$ chown -R 0700 ~/.ssh
[alias@localhost ~]$ chown -R 0644 ~/.ssh/authorized_keys
[alias@localhost ~]$ chown -R alias:alias /home/alias
# 开启SELinux时,还需要执行(root用户把/home改成/root)
[alias@localhost ~]$ restorecon -R -v /home
2.4、修改SSH配置文件,支持使用证书登录(root权限)
vim /etc/ssh/sshd_config
# 以下几个重要修改
PermitRootLogin no # 关闭root用户登录(可选)
StrictModes no # 是否让sshd去检查权限
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 有了证书登录,就禁用密码登录(可选)
2.5、重启服务
systemctl restart sshd.service
三、证书登录
#下载id_ras到本地
3.1、配置SecureCRT使用证书登录
3.2、配置Putty使用证书登录
3.2.1、使用Putty密钥生成器转换私钥格式
- 点击File – Load private key(All Files .),导入id_rsa文件;
- 点击Save private key按钮,命名并生成ppk文件,比如alias.ppk。
- 这个ppk文件就是用于Putty的私钥。
3.2.2、设置Putty使用证书登录
- Putty→Session:输入Host Name 或者 IP Address;
- Putty→Connection→Data:输入Auto-login username(自动登陆用户名);
- Putty→Connection→SSH→Auth:在Private key file for authentication选择私钥文件;
- Putty→Session:Saved Session:输入某个名称保存,以后直接双击该名称就可登录。
也可以用带参数的快捷方式执行证书登录,比如:D:\Tool\Putty-0.77-cn-portable-win-20220911>putty -i "d:\alias.ppk" [email protected]
3.3、配置Centos7客户端使用证书登录
- 上传私钥到Centos7客户端 ~/.ssh/目录下
- 默认权限0644对于文件~/.ssh/id_rsa太开放了,不会让你登录
- 修改权限 chmod 600 ~/.ssh/id_rsa