会话关闭时如何自动从known_hosts中删除关键行?

会话关闭时如何自动从known_hosts中删除关键行?

我正在使用 AWS CloudFormation 实现整个环境的自动化,在测试期间,我需要频繁地终止并重新创建服务器。

服务器配置为从专用池中设置其 IP 地址,这意味着在我第一次连接它们时,我必须接受主机密钥检查(是/否问题),然后当我删除服务器并重新创建它时,我必须每次都从 known_hosts 文件中删除服务器的密钥。

我的问题是:

当我关闭会话时,是否可以自动从 known_hosts 中删除密钥?是否存在我错过的设置?

答案1

您可以将 ssh 配置为对 known_hosts 使用多个文件,并且新条目仅添加到第一个文件,通过设置该文件/dev/null实际上不会保存它们:

UserKnownHostsFile /dev/null ~/.ssh/known_hosts

将其与您个人喜欢的询问或自动接受未知密钥相结合:

StrictHostKeyChecking no

您可能希望将这些选项限制在您的 DEV 环境中(特定主机中),而不是全局默认值,因为它们将带走相当多的安全密钥检查功能,因此在您的~/.ssh/config

Host *.dev.example.com
    IdentityFile ~/.ssh/id_rsa.dev.example.com
    UseKeychain yes
    User hbruijn-adm
    StrictHostKeyChecking ask
    UserKnownHostsFile /dev/null ~/.ssh/known_hosts

答案2

你可以这样做:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -l user host

StrictHostKeyChecking=no 当然不是一个好主意,因为它会自动接受所有主机密钥

UserKnownHostsFile=/dev/null 不会将任何内容保存到您的常规 known_hosts 文件中。

答案3

正确的方法是将其SSHFP(自动)放入DNS,通过对区域进行签名DNSSEC,然后让其SSH处理其余部分,特别是如果您需要经常执行此操作并且密钥不断变化。

相关内容