前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSH 应用

SSH 应用

作者头像
河边一枝柳
发布2021-08-06 11:59:08
8840
发布2021-08-06 11:59:08
举报
文章被收录于专栏:一个程序员的修炼之路

SSH(Secure Shell)可以通过RSA公钥加密算法,进行安全的远程登陆和远程操作。使用SSH,登陆的账号/密码以及命令都是经过加密的传输的,从而保证在传输过程中不会被hacker或者eavesdropper窃取信息。

1. SSH 登陆原理

理解SSH的加密原理要对公钥和私钥有一定的了解,在SSH信息传递过程中公钥为加密秘钥,私钥为解密秘钥。

例子:Client用SSH登陆Server,命令"ssh root@10.204.176.2" (假设Server的IP为10.204.176.2),过程如下,

(1)Client连接Server

(2)Server返回一个公钥(Public Key)给Client

(3)Client用Server返回的公钥对用户的账号和密码进行加密,并发送给Server

(4)Server接收到Client发送的加密后的账号和密码信息,用私钥(Privacy Key)进行解密,验证成功

有兴趣的同学可以再研究下数字签名技术,其使用加密秘钥作为私钥,解密秘钥作为公钥。

2. SSH known_hosts文件

known_hosts文件用来记录连接过的Server所发送的公钥信息,为什么要将Server发送过来的公钥记录保留在文件中呢?

这种做法可以尽量的避免中间人攻击(Man-in-the-middle attack)。中间人攻击:如果存在一个hacker获取到Client发送的SSH登陆请求后,伪造一个包含公钥的数据包发送给Client,Client将用hacker发送的公钥对账号/密码进行加密后,发送给Hacker所用的主机,由此Hacker变获得了Client欲登陆的Server的账号和密码。

known_hosts文件记录了原先Client登陆Server时,Server发送给Client的公钥信息,在下一次登陆Server的时候,会将Server这次返回的公钥和known_hosts里面记录的公钥进行比对,如果不同,则会给出如下图提示信息,给用户给出警告:

注意上图中显示的"ff:cc....9e:70"并不是公钥,而是公钥的md5值。因为公钥比较长,通过known_hosts中Server的公钥的md5值与Server刚返回的公钥的Md5进行比较,则可以确定两个公钥是否一致。

当然如果你确定Server没有问题,可以删除掉known_hosts文件(一般在~/.ssh/目录下)里Server ip对应的那一行信息,则可以成功SSH登陆到Server。

3. SSH 实现无密码登陆

SSH也提供了基于秘钥的安全验证,该方法不需要Client输入登陆的账号和密码。其原理如下:

(1)Client使用命令"ssh-keygen -t rsa"产生一对公钥和私钥(Key Pair),公钥:~/.ssh/id_rsa.pub, 私钥:~/.ssh/id_rsa。

(2)将id_rsa.pub里面的公钥添加进Server:~/.ssh/authorized_keys 文件中

(3)Client SSH登陆Server,连接Server

(4)Server产生一个随机数并且用原先Client给予的公钥进行加密,发送给Client

(5)Client接收到Server的反馈的加密后的随机数信息,用私钥解密,并将解密后的结果发送给Server

(6)Server将Client解密的信息与原先产生的随机数进行比对,如果相同,则验证成功

4. 多个Client,采用相同的公钥和私钥对

项目中一台物理机中安装多了多台Linux系统,并且每一个Linux系统配置了相同的静态IP,并且Server要免密码的登陆每一个Client。

解决方法,只需要将相同的公钥和私钥对拷贝到每一个Client:~/.ssh/ 目录下,并且将公钥添加进Sever:~/.ssh/authorized_keys文件中即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个程序员的修炼之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. SSH 登陆原理
  • 2. SSH known_hosts文件
  • 3. SSH 实现无密码登陆
  • 4. 多个Client,采用相同的公钥和私钥对
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档