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地址和此操作系统下的用户账号用户密码进行远程登陆,但这样是不安全的,

$ ssh username@ip
 * -o StrictHostKeyChecking=no:降低安全级别
 * -p 输入密码

证书登陆

原理
  • 将客户端生成的公钥上传到服务器的配置文件中,使服务端允许此设备链接,此时当拥有私钥的客户端进行密钥登陆时,将会通过算法匹配此设备锁包含的私钥是否与服务器端的公钥相匹配,以便来验证登录信息。
  • 如果需要了解详细的算法过程可自行百度
步骤
客户机
  1. 生成本机的公私钥
$ ssh-keygen -t rsa
 * -t 指定密钥生成算法,一般均使用rsa

上面的命令将会默认在当前用户的家目录~(一般是/home/username)下生成一个隐藏文件夹.ssh,里面包括了两个密钥文件

  • id_rsa:私钥,保存在自己手里,不要让别人知道
  • id_rsa.pub:公钥,一般提交给各个服务器,用来进行权限配置
    在这里插入图片描述
  • 生成密钥时将会询问文件生成目录,默认为/home/usernam/.ssh,当然也可以在此处自己指定
  • 之后会让用户设置passphrase,即密钥的密码;如果此处设置了密码,在之后的密钥远程登陆的过程将会需要输入密码;如果不需要密码直接登录即可(为了安全考虑,此处建议设置密码)
  1. 配置私钥选择路径
    上面提到,每次登陆需要匹配服务器出提前配置的公钥和客户端的私钥,所以需要知道客户端私钥存放路径,此时有两种方法:
  • 如果默认放在家目录下,路径固定,可以不用更改
  1. 在登陆时使用-i指定私钥文件绝对路径
$ ssh -i ~/.ssh/id_rsa blue@<ssh_server_ip>
  1. etc/ssh/ssh_config文件下配置默认路径
# 其实默认id_rsa就已经加入私钥的路径了,这里只是示例而已
IdentityFile ~/.ssh/id_rsa
# 如果有其他的私钥,还要再加入其他私钥的路径
IdentityFile ~/.ssh/blue_rsa

到此客户端的配置就完成了

服务器
  1. 配置允许登陆的客户端到文件~/.ssh/authorized_keys
    • 当然你也可以直接复制粘贴到文件末尾
$ scp ~/.ssh/id_ras.pub username@ip:~        
# 将文件传到服务器上
$ cat id_rsa.pub >> ~/.ssh/authorized_keys   
# 在服务器端将文件内容写入文件末尾
$ /etc/init.d/ssh restart                    
# 重启ssh服务
  1. 进行登陆配置/etc/ssh/ssh_config(也可能是文件/etc/ssh/sshd_config
PermitRootLogin no
# 取消root管理员用户的登陆权限,使得客户端只能登陆到服务器允许的用户账号上

RSAAuthentication yes  
# 是否允许用户自行使用成对的密钥系统进行登入行为 version 2
PubkeyAuthentication yes  
# 是否允许用户自行使用成对的密钥系统进行登入行为
AuthorizedKeysFile   %h/.ssh/authorized_keys
# 公钥数据路径

PasswordAuthentication no
# 在确认证书登陆成功后,再关闭密码登陆
# 如果直接关闭,可能因为证书登陆配置失败导致再也无法登陆到服务器上
  1. 使用场景

当多人协同服务一个大项目时,为了方便管理每个人所拥有的权限,所产生的信息,以及服务器安全等,我们可以为每个人设置一个服务器用户,单独为此用户分配权限,之后将该员工的公钥配置到对应用户的家目录下。这样与此员工相关的信息均与该服务器用户相关联,当删除用户时,与员工相关的所有信息都将被删除,同时公钥被删除了也就取消了该员工的登陆权限。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值