SSH 证书登录

一、证书登录是什么?

        证书登录就是为了解决上面的缺点而设计的。它引入了一个证书颁发机构(Certificate Authority,简称 CA),对信任的服务器颁发服务器证书,对信任的用户颁发用户证书。登录时,用户和服务器不需要提前知道彼此的公钥,只需要交换各自的证书,验证是否可信即可。

        证书登录的主要优点有两个:

(1)用户和服务器不用交换公钥,这更容易管理,也具有更好的可扩展性。

(2)证书可以设置到期时间,而公钥没有到期时间。针对不同的情况,可以设置有效期很短的证书,进一步提高安全性。

二、证书登录的流程分析

        SSH 证书登录之前,如果还没有证书,需要生成证书。具体方法是:(1)用户和服务器都将自己的公钥,发给 CA;(2)CA 使用服务器公钥,生成服务器证书,发给服务器;(3)CA 使用用户的公钥,生成用户证书,发给用户。有了证书以后,用户就可以登录服务器了。整个过程都是 SSH 自动处理,用户无感知。

        1)用户登录服务器时,SSH 自动将用户证书发给服务器。

        2)服务器检查用户证书是否有效,以及是否由可信的 CA 颁发。证实以后,就可以信任用户。

        3)SSH 自动将服务器证书发给用户。

        4)用户检查服务器证书是否有效,以及是否由信任的 CA 颁发。证实以后,就可以信任服务器。

        5)双方建立连接,服务器允许用户登录。


三、具体操作流程

1. 生成 SSH 密钥和公钥,并配置相应权限

首先登录到服务器,生成 SSH 的密钥和公钥

ssh-keygen -t rsa

将公钥添加到 authorzied_keys 文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改 authorized_keys 权限为 644,.ssh 权限为700

chmod -R 700 ~/.ssh
chmod -R 644 ~/.ssh/authorized_keys

查看修改后的权限

2. 修改 ssh 配置

 修改 sshd_config 配置文件 vi /etc/ssh/sshd_config,修改配置参数

# 允许密钥认证
RSAAuthentication yes
PubkeyAuthentication yes
StrictModes no
# 公钥保存文件
AuthorizedKeysFile .ssh/authorized_keys

注:第一次部署时在这里踩了一个坑。出于安全角度考虑,在之前配置 ssh 时,设置了禁用 root 远程登录 PermitRootLogin no,这里生成 root 证书登录时,最后导致登录失败。如果是为 root 用户生成登录证书,还需要确认 sshd_config 的PermitRootLogin 为 yes。

3. 下载私钥进行登录

        记住是下载 服务器上的~/.ssh/id_rsa 私钥文件到本地电脑上,本地电脑借助这个私钥文件就可以实现密钥登陆,进行 ssh 登录

scp root@ip:/root/.ssh/id_rsa 本地电脑的位置

下载后确认其权限是否为 600,如果不是进行调整 chmod 600 ~/id_rsa
若文件权限较大,会出现:

ssh -i id_rsa root@hostname
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions

权限确认后,即可进行登录

# ssh -i id_rsa root@hostname
Last login: Tue Nov 13 09:10:17 2018 from 116.232.85.60
[root@vm172-31-0-20 ~]# 

使用证书登录成功!

4. 最后再对使用 ssh -i 指定证书文件进行优化

在本地电脑的 .ssh 目录下创建 config 文件,编辑文件内容:

Host domain
	HostName hostname
	User root
	IdentityFile	~/id_rsa

保存后,确认其权限为600,若不是,须调整到600
再进行远程登录时,使用 ssh domain 即可

5、登录过程自己总结

        利用密钥登录,其实就是自己保存私钥,服务器上存放公钥,正常情况下服务器会将公钥的内容写入到.ssh/authorized_keys文件中,然后客户端也就是自己连接时,系统会默认去C盘的家目录.ssh文件夹下寻找私钥文件,linux同样去家目录下寻找,其实如果你明白其中原理,是可以不用服务器端生成密码对,任何一对只要配对的密码对就是,只要满足连接时采用的私钥和服务器端进行配对的公钥能够成功就行,所有我们也可以将自己配对好的公钥内容上传到服务器上,并写入到authorized_keys文件中,原理是一样的。

        这里注意的是需要给文件添加对应的读写权限以及配置允许进行密钥登录

        这里有个小问题就是/etc/ssh下面的私钥和公钥文件系统自带就有是要干嘛的???,之后如果理解了再来进行补充

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值