如何在会话closures时自动从known_hosts中删除密钥?

我正在使用AWS CloudFormation自动化整个环境,在testing期间,我需要经常杀死和重新创build服务器。

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

我的问题是:

closures会话时是否可以自动从known_hosts中删除密钥? 有没有我错过了这样的设置?

你可以configurationssh为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 

你可以这样做:

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

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

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

正确的做法是将SSHFP (自动)放入DNS ,通过DNSSEC对区域进行签名,然后让SSH处理剩下的事情,特别是如果您经常需要这样做,并且密钥不断变化。