ssh 免密登录及其原理

一 什么是ssh

引用百度百科的一句话,SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

说白了ssh其实就是一种远程登录的协议,由于它的权威性,目前是比较安全和可靠的。

二 基于口令的验证

在linux中如何从一台机器A登录到另外一台机器B中?在linux中 要想从A登录到B 就可以使用 ssh username@B 然后 只需要输入密码就可以 这个默认是用的端口是21 如果端口不是21 则加 -p 并且指定端口 ,这种方式登录使用的是口令登录,只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。因为这个服务器可能是伪造的 这样你的账号和密码就会统统泄露,哈哈 到时候 你就悲剧了。

ssh 免密登录及其原理

三基于密钥的验证

这种验证方式是 客户端需要生成一对ssh的公私钥,也就是生成 公钥和私钥,假设现在想在A机器想通过基于秘钥的验证方式登录到机器B中,则需要做一下步骤。

1 在机器A中生成一对公钥和私钥

在linux生成公钥私钥非常简单 只需要执行

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

然后通过scp命令 copy到 远程机器B中

cd .ssh

scp id_rsa.pub username@B:/home/username/.ssh/authorized_keys

执行上面的命令之后 会提示用户命令 只需要输入密码就可以了,以后就可以通过ssh username@B 来登录了

免密登录原理如下 图片来自于网络

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要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。


分享到:


相關文章: