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下面的私钥和公钥文件系统自带就有是要干嘛的???,之后如果理解了再来进行补充
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgegeie
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01