本文介绍在Linux下自动接受SSH密钥指纹的方法,可使用SSH选项(StrictHostKeyChecking=no)或ssk-keyscan命令,以下将详细介绍。
前言 SSH Secure Shell是一种加密网络协议,可在两个主机之间提供安全的加密通信。它使您可以通过不安全的网络安全地连接到远程计算机。参考在Debian 10上设置SSH密钥,包括介绍使用SSH密钥登录到服务器。 首次连接到Linux系统时,SSH会提示您接受计算机的指纹以成功建立连接,因为“known_hosts”文件中没有指纹。指纹是系统公钥的简化版本。 为了保护自己免受中间人攻击(MITM),ssh程序将使用自上次连接以来存储的指纹来验证远程系统ssh的指纹。 如果指纹已更改,则会提醒您并询问您是否要继续。否则,将允许您直接登录。但是有时您可能需要自动接受SSH指纹。例如,如果您创建了一个Shell脚本以在多台计算机上运行以提取报告。 注意:您正在通过以下方法有效地绕过SSH预期的安全性。在内部网络上使用它的危险性较小,但不建议在公共Internet或其他不受信任的网络上使用它。 可以使用以下两种方法来完成此操作。 1]、通过ssh命令使用“StrictHostKeyChecking=no”选项自动接受ssh指纹。 2]、自动使用ssk-keycan命令接受ssh指纹。 首次连接到远程计算机时,将警告您无法建立主机的真实性,并提供密钥指纹以进行验证: $ ssh root@192.168.1.4 The authenticity of host '192.168.1.4 (192.168.1.4)' can't be established. ECDSA key fingerprint is 6a:75:e3:ac:5d:f8:cc:04:01:7b:ef:4d:42:ad:b9:83. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.1.4' (ECDSA) to the list of known hosts. root@192.168.1.4's password: Last login: Mon Dec 14 14:16:51 2020 from 192.168.1.6 接受指纹后,它将被保存在“known_hosts”文件中。当重新连接到同一远程主机时,SSH将根据known_host文件检查指纹以验证其身份。如果这匹配,则只要密钥保持不变,就可以直接访问系统。 如果指纹与known_hosts不匹配,您将看到以下警告。如果主机公钥由于某些原因发生更改,则会发生这种情况。 如果您看到下面的警告,请仔细检查您实际上是在通过安全连接与正确的主机连接。尽管大多数情况下它是无害的,但这可能表明存在潜在问题。如下截图:
1、如何使用SSH选项自动接受SSH密钥指纹 此方法简单直接,要实现此目的,只需使用SSH命令添加选项即可。 使用此选项时,ssh会自动将新的主机密钥添加到用户known_host文件,并允许其使用修改后的主机密钥托管连接以连接到远程系统: $ ssh -o "StrictHostKeyChecking no" 192.168.1.5 Warning: Permanently added 'centos7,192.168.1.5' (ECDSA) to the list of known hosts. ok 但是,以上警告表明它已将一个密钥添加到known_host文件。
2、如何使用ssk-keyscan命令自动接受SSH密钥指纹 这是另一种方法,非常简单。ssh-keycan工具允许您将ssh密钥指纹附加到远程服务器上的user-known_host文件中。当您要添加批量时,此工具非常有用。 在调用脚本中的实际命令之前,必须将该命令插入到Shell脚本中。 使用以下格式将ssh密钥指纹添加到远程主机: $ ssh-keyscan -H 192.168.1.4 >> ~/.ssh/known_hosts #centos:22 SSH-2.0-OpenSSH_7.4 使用以下格式将ssh密钥指纹添加到多个主机。 为此,必须将远程主机详细信息添加到文件中,并使用ssh-keycan命令按如下所示调用它。例如,我在“remote-hosts.txt”文件中添加了五台主机。 您可以使用任何文本编辑器添加条目。我建议您使用vim编辑器,这是Linux管理员和开发人员广泛使用的最灵活、功能最强大的文本编辑器,参考玩转Linux必备的Vim技能,一文读懂Vim的安装和配置,学习之法: # vi remote-hosts.txt 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 如果是,则ssh-keyscan命令如下: $ ssh-keyscan -f /tmp/remote-hosts.txt >> ~/.ssh/known_hosts #centos:22 SSH-2.0-OpenSSH_7.4 #centos:22 SSH-2.0-OpenSSH_7.4 #centos:22 SSH-2.0-OpenSSH_7.4 #centos:22 SSH-2.0-OpenSSH_7.4 #centos:22 SSH-2.0-OpenSSH_7.4
相关主题 |