Linux-ssh原理

为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录。但是很多时候为了操作方便,我们都通过设置SSH免密码登录。那么该如何设置?是不是免密码登录就不安全了呢?

被访问主机的秘钥存储机制

在被SSH登录的主机中,其实都有一个存储来登录的主机的秘钥的文件,它的名字叫做authorized_keys,它的位置就在root/下面的隐藏目录.ssh中(注:如果这台主机没有被设置任何免秘钥登录,这个文件缺省是不存在的)

这里写图片描述

在authorized_keys文件中,存储着能够登录本地主机的各个主机的身份证信息,他们的存储格式都是以ssh-rsa开头的一组字符串。在这里,我们不用理解他的意义,但是要记住两点:1. 每个ssh-rsa及其之后字符串组成了一个唯一代表一个主机的秘钥;2. 这个秘钥是无法被仿照的;

免密码登录原理

ssh免密码登录原理图

 图解,server A免登录到server B:
1.在A上生成公钥私钥。
2.将公钥拷贝给server B,加入到授权文件authorized_keys中
3.Server A向Server B发送一个连接请求。
4.Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A。
5.Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
总之:A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。

如何生成密钥:

1、在客户端打开终端,执行ssh-keygen,该命令会默认在~/.ssh/目录下创建id_rsa、id_rsa.pub两个文件,分别为您的公钥和私钥。

2、将公钥id_rsa.pub文件拷贝到服务器端的~/.ssh/authorized_keys文件中,有三种方法:

1) 通过scp拷贝:scp -P 22 ~/.ssh/id_rsa.pub user@host:~/authorized_keys     #可选参数-P代表指定用端口号22
2) 通过ssh-copyid程序:ssh-copy-id user@host  #不需追加改文件名,但不能指定端口号,默认以22端口
3) 通过cat方法:cat ~/.ssh/id_rsa.pub | ssh -p 22 user@host ‘cat >> ~/.ssh/authorized_keys’

转自:https://www.cnblogs.com/kex1n/p/6017963.html?utm_source=itdadao&utm_medium=referral

猜你喜欢

转载自blog.csdn.net/weixin_42782897/article/details/88802918