ssh 原理及fingerprint异常处理

1、原理简介

ssh是一种网络协议,用于计算机的加密登陆,以及一些远程命令执行。

在linux常用指令中,ssh, scp都使用了ssh协议。

ssh协议是采用Rsa加密算法来实现的。

rsa加密算法是一处非对称加密算法,就是指该算法加密和解密使用不同的密钥,即使用加密密钥进行加密、解密密钥进行解密。 在RAS算法中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。

下面使用ssh协议实现登陆的流程来对协议进行说明:

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

那么为什么需要fingerprint呢?

这是由于ssh协议的实现机制决定的,ssh协议无法确认远程主机是不要告,出于安全的的考虑增加了fingerprint手动确认,让用户来自动确认主机的可靠怀。

如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪,而攻击者则可以通过用户请求获得远程主机的密码,登陆远程主机。这就是著名的中间人攻击。

2、ssh/scp 跳过首次连接远程主机的fingerprint

当首次ssh或者scp时,会收到系统的如下提示。

The authenticity of host '119.8.35.122 (119.8.35.122)' can't be established. ECDSA key fingerprint is SHA256:vAPUXtKvN3KmiGvq8XEtYUlBI47eiX6fvKp4EPwUm70. Are you sure you want to continue connecting (yes/no/[fingerprint])?

以上确认提示大意为:无法确认19.8.35.122主机的真实可靠性,它的rsa key的指纹是xxx,你是否希望继续连接到该机器?

一旦选择是,则机器19.8.35.122的rsa key就会保存到.ssh/known_hosts中,下次连接时,有了记录,就不会再有相应提示。

当管理的机器非常多时,每一台都需要手动确认是一件非常麻烦的事情,我们要以通过后面的方便来跳过确认。我们可以采用发下两种方式来路过fingerprint确认。出于安全考虑,本机制只建议在内网使用。

方式一:在命令行中添加 -o "StrictHostKeyChecking no" 

执行ssh或scp命令时,系统就会自动把远程主机的rsa key加入到.ssh/known_hosts文件中。

ssh -o "StrictHostKeyChecking no" root@host

StrictHostKeyChecking no|ask|yes:

    StrictHostKeyChecking代码了远程主机的host key确认方式。有如下几种设置。

    no代表不做任何确认,直接通过验证,把rsa加入到.ssh/known_hosts。

    ask为默认值,需要用户手动确认是否通过验证,是否把远程主机加入到.ssh/known_hosts中。

    yes为最高安全级别,如果本地没有相应的rsa key则会直接拒绝连接,并出给提示。

方式二:修改.ssh/config(或者/etc/ssh/ssh_config)配置后

配置文件修改后,将应用于所有ssh命令,不需要在单命令上指定StrictHostKeyChecking:

在.ssh/config(或者/etc/ssh/ssh_config)中增加如下配置:

StrictHostKeyChecking no

3、处理远程主机rsa key变动的情况

当远程主机的rsa key与本地对不上,则会收到报错。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 50:e6:cb:58:bc:b7:a3:f6:e8:8f:46:a7:c1:5f:c2:df. Please contact your system administrator. Add correct host key in /home/cobyeah/.ssh/known_hosts to get rid of this message. Offending key in /home/cobyeah/.ssh/known_hosts:7 RSA host key for 192.168.0.4 has changed and you have requested strict checking. Host key verification failed.

我们有以下两个方法可以解决。

方法一:设置StrictHostKeyChecking no

方法二:删除.ssh/known_hosts中记录的与远程主机不匹配的rsa key。

4、参考文档

SSH原理与运用(一):远程登录 - 阮一峰的网络日志

解决ssh登录Host key verification failed - IMEIXI4EVER - 博客园

说说SSH、SCP和SFTP的那些事儿 - 云+社区 - 腾讯云

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用中的参考文献,Ajay Kumar在2018年的著作《Contactless 3D Fingerprint Identification》中提到了无接触式3D指纹识别技术。该技术使用非接触方式获取人体指纹的三维图像,并通过特定算法进行识别和比对。 引用中的内容似乎是一个关于获取指纹索引文档数的操作示例。通过GET指令查询"fingerprint"索引的文档数量。 引用则是一个关于使用Logstash进行指纹处理的配置文件示例。其中使用了SHA1哈希算法对"sensor_id"和"date"两个字段进行指纹处理,并通过Elasticsearch将结果输出到"fingerprint"索引中。 综上所述,根据提供的引用内容,无法准确回答关于"fingerprint3"的问题,因为没有提及与"fingerprint3"相关的具体信息。请提供更多相关信息,以便我能够给出更准确的回答。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Contactless 3D Fingerprint Identification](https://download.csdn.net/download/weixin_38290023/11274798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Logstash:运用 fingerprint 过滤器处理重复的文档](https://blog.csdn.net/UbuntuTouch/article/details/106639848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值