SSH交互式脚本StrictHostKeyChecking选项

Posted 楚兴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH交互式脚本StrictHostKeyChecking选项相关的知识,希望对你有一定的参考价值。

SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查。

什么是SSH公钥检查

SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机:

The authenticity of host '10.0.0.1 (10.0.0.1)' can't be established.
ECDSA key fingerprint is 91:63:21:08:4a:96:23:5b:f6:98:c9:a8:cd:cb:8b:91.
Are you sure you want to continue connecting (yes/no)?

当选择接受,就会将该主机的公钥追加到文件 ~/.ssh/known_hosts 中。当再次连接该主机时,就不会再提示该问题了。

如何去掉公钥确认?

在首次连接服务器时,会弹出公钥确认的提示。这会导致某些自动化任务由于初次连接服务器而任务中断。或者由于~/.ssh/known_hosts 文件内容清空,导致自动化任务中断。 SSH 客户端的 StrictHostKeyChecking 配置指令,可以实现当第一次连接服务器时,自动接受新的公钥。只需要修改 /etc/ssh/ssh_config 文件,包含下列语句:

Host *
 StrictHostKeyChecking no

或者在 ssh 命令行中用 -o 参数

$ ssh -o StrictHostKeyChecking=no 10.0.0.1

以上是关于SSH交互式脚本StrictHostKeyChecking选项的主要内容,如果未能解决你的问题,请参考以下文章

ssh非交互式密码授权远程执行脚本

SSH使用expect实现密码交互脚本

Linux系统shell脚本之Expect实现SSH免交互执行命令

python登陆ssh脚本无法完全退出

免交互方式批量分发公钥脚本

无密钥登录的自动脚本实现(ssh-copy-idexpect免交互输入脚本)