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 并且指定端口 ,这种方式登录使用的是口令登录,只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。因为这个服务器可能是伪造的 这样你的账号和密码就会统统泄露,哈哈 到时候 你就悲剧了。

https://i-blog.csdnimg.cn/blog_migrate/9388eb4969cfb6596a2a39357ab04680.png

三  基于密钥的验证

      这种验证方式是 客户端需要生成一对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 来登录了

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

https://img-blog.csdn.net/20160319193556260

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

 

 

SSH免密登录原理是利用SSH公钥认证机制,即在客户端生成公钥和私钥,将公钥传输到服务器端,并将私钥保存在客户端。当客户端连接服务器时,服务器会向客户端发起挑战,客户端使用私钥对挑战进行签名,并将签名返回给服务器,服务器使用之前保存的公钥进行验证,验证通过后即可免密登录。 以下是实现SSH免密登录的步骤: 1. 在客户端上使用ssh-keygen命令生成公钥和私钥,命令格式如下: ``` ssh-keygen -t rsa ``` 2. 将生成的公钥传输到服务器端,可以使用ssh-copy-id命令,命令格式如下: ``` ssh-copy-id user@server ``` 这将会把公钥复制到服务器的~/.ssh/authorized_keys文件中。 3. 在客户端上保存私钥文件,通常保存在~/.ssh目录下。 4. 确保服务器端配置文件/etc/ssh/sshd_config中的PubkeyAuthentication参数为yes,表示启用公钥认证。 5. 确认客户端和服务器端的ssh服务都已经启动,然后就可以尝试使用ssh命令连接服务器,此时就不需要输入密码了。 ``` ssh user@server ``` 注意事项: 1. 在使用ssh-keygen生成公私钥时,可以根据需要设置密码,加强私钥的安全性。 2. 在使用ssh-copy-id将公钥复制到服务器端时,需要输入密码。 3. 为了安全起见,建议只将公钥复制到需要免密登录的服务器上。如果需要在多台服务器之间进行免密登录,需要在每台服务器上重复执行以上步骤。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值