spu*_*der 12 ssh ssh-keygen ssh-keys openstack
每个用户每天创建和销毁 15 个以上的 VM。VM 在公司内部的 OpenStack 云中创建。
每次为新虚拟机分配一个先前已分发的 IP 地址时,用户都会收到可怕的主机密钥验证失败错误。这是因为 ssh 密钥与用户known_hosts文件中的 IP 地址不匹配。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
xxxxxxxxxxx
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:4
RSA host key for domain.com has changed and you have requested strict checking.
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)
我可以看到的两个解决方案是:
ssh-keygen -RipAddress- (用户已经厌倦了这个解决方案,从那时起每天都会遇到多次)有什么方法可以防止出现此错误消息,同时保持安全?也许只关闭特定子网的安全检查?
Hau*_*ing 19
强大的功能HostKeyAlias可以解决您的问题:
ssh -o HostKeyAlias=hostkeyalias__vm_2013-05-11_07 user@host
Run Code Online (Sandbox Code Playgroud)
创建一个条目hostkeyalias__vm_2013-05-11_07中(不含IP) known_hosts。当然,您可以编写一个脚本或 shell 函数,在每次 ssh 调用之前设置此值。或者您使用 shell 变量:
HOSTKEYALIAS=hostkeyalias__vm_2013-05-11_07
ssh -o HostKeyAlias=$HOSTKEYALIAS user@host
Run Code Online (Sandbox Code Playgroud)
并$HOSTKEYALIAS在 VM更改时更改。应不时从 中删除旧条目known_hosts。
hac*_*rb9 11
问题在于ssh假设 IP 地址和主机之间存在 1 对 1 映射。我们必须打破这种映射只为您的云服务器的IP地址。
将以下节添加到您的~/.ssh/config文件中。
# Disable HostKey checking for servers which frequently change keys
Host 172.16.24.32 172.16.24.33 172.16.24.34
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
只需更改 IP 地址即可完成。¹
如果您想将此应用于网络块,例如 192.168/16,您可以像这样使用通配符:
# Do not keep HostKeys for internal networks.
Host 10.*.*.* 192.168.*.*
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
最初的问题提到了 IP 地址,但您当然可以改用主机名。例如,这将匹配ssh instance32.vm.yoyodyne.com:
Host *.vm.yoyodyne.com
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
如果您想同时使用主机名和 IP 地址,则需要明确指定两者,因为 SSH 与解析的IP 地址不匹配。例如,如果你有ssh ourvm.local一个快捷方式ssh 192.168.1.53:
Host 192.168.1.53 ourvm.local
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
绕过ssh的安全模型时要小心。特别是,仔细检查您的通配符是否不匹配任何主机密钥不会更改的真正服务器。
¹为什么是 /dev/null?我将KnownHosts 数据放入位桶,因为只有设置StrictHostChecking no会删除警告,但仍然拒绝连接。这很愚蠢,所以我认为 OpenSSH 最终会改变行为或添加一个新选项。如果出现更好的解决方案,我会更新此答案。
小智 10
创建~/.ssh/config内容:
Host *
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
或者,您可以为 ssh 创建一个别名:
ssh -o StrictHostKeyChecking=no
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30442 次 |
| 最近记录: |