ssh证书登陆

前言
本文基于ubuntu20.04 LST版本,通过在mac上使用VMware安装linux虚拟机实现。
SSH证书登陆
Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。(摘自百度)
SSH外壳安全协议,是一种可以用来远程登陆操作系统的协议,包括使用密码登陆
和证书登陆
,本文着重讲解证书登陆的实现过程(但这里其实应该是密钥登陆,真正的证书CA登陆可自行去百度)
密码登陆
使用操作系统所在ip地址和此操作系统下的用户账号
和用户密码
进行远程登陆,但这样是不安全的,
1 | ssh username@ip |
密钥登陆
原理
- 将客户端生成的公钥上传到服务器的配置文件中,使服务端允许此设备链接
- 此时当拥有私钥的客户端进行密钥登陆时,将会通过算法匹配此设备锁包含的私钥是否与服务器端的公钥相匹配,以便来验证登录信息。
- 如果需要了解详细的算法(rsa)过程可自行百度
步骤
客户机
- 生成本机的公私钥
1 | ssh-keygen -t rsa |
上面的命令将会默认在当前用户的家目录~
/$HOME
(一般是/home/username
)下生成一个隐藏文件夹.ssh
,里面包括了两个密钥文件
id_rsa
:私钥,保存在自己手里,不要让别人知道id_rsa.pub
:公钥,一般提交给各个服务器,用来进行权限配置- 生成密钥时将会询问文件生成目录,默认为
/home/usernam/.ssh
,当然也可以在此处自己指定 - 之后会让用户设置
passphrase
,即密钥的密码;如果此处设置了密码,在之后的密钥远程登陆的过程将会需要输入密码;如果不需要密码直接登录即可(为了安全考虑,此处建议设置密码)
- 配置私钥选择路径
上面提到,每次登陆需要匹配服务器出提前配置的公钥和客户端的私钥,所以需要知道客户端私钥存放路径,此时有两种方法:
- 如果默认放在家目录下,路径固定,可以不用更改
- 在登陆时使用
-i
指定私钥文件绝对路径
1 | ssh -i ~/.ssh/id_rsa blue@<ssh_server_ip> |
- 到
etc/ssh/ssh_config
文件下配置默认路径
1 | 其实默认id_rsa就已经加入私钥的路径了,这里只是示例而已 |
到此客户端的配置就完成了
服务器
- 配置允许登陆的客户端到文件
~/.ssh/authorized_keys
下- 当然你也可以直接复制粘贴到文件末尾
1 | scp ~/.ssh/id_ras.pub username@ip:~ |
- 进行登陆配置
/etc/ssh/ssh_config
(也可能是文件/etc/ssh/sshd_config
)
1 | PermitRootLogin no |
- 使用场景
当多人协同服务一个大项目时,为了方便管理每个人所拥有的权限,所产生的信息,以及服务器安全等,我们可以为每个人设置一个服务器用户,单独为此用户分配权限,之后将该员工的公钥配置到对应用户的家目录下。这样与此员工相关的信息均与该服务器用户相关联,当删除用户时,与员工相关的所有信息都将被删除,同时公钥被删除了也就取消了该员工的登陆权限。
证书登陆 CA
原理
步骤
- Post title:ssh证书登陆
- Post author:Wei Jieyang
- Create time:2021-03-08 14:07:39
- Post link:https://jieyang-wei.github.io/2021/03/08/ssh证书登陆/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.